Use window.location.assign instead of href
What does this MR do and why?
Changes the implementation of visitUrl
. Instead of using location.href
, let's use location.assign
.
While both location.assign
and location.href
can be used to achieve the same result, location.assign
is easier to test for the following reasons:
It's possible to spy on the implementation and check the parameters passed
const mySpy = jest.spyOn(window.location, "assign")
// call functions to be tested...
expect(mySpy).toHaveBeenCalledWith("example.org")
It's easier to capture bugs
With spies, we can test how many times the function has been called therefore we can catch unwanted calls:
// Imagine the code assigns `href` twice. In reality, the user will be redirected to `url-1`.
window.location.href = "url-1"
window.location.href = "url-2"
// But the following expectation will still be true and won't capture `url-1`.
expect(window.location.href).toBe("url-2")
// If we were using `location.assign` we could also test something like:
expect(window.location.assign).toHaveBeenCalledTimes(1)
expect(window.location.assign).toHaveBeenCalledWith("url-2")
Screenshots or screen recordings
No visual changes.
How to set up and validate locally
- Checkout this branch
- Run
yarn jest
to run all tests locally
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Edited by Savas Vedova