41 lines
1.6 KiB
JavaScript
41 lines
1.6 KiB
JavaScript
|
import setWindowLocation from './set_window_location_helper';
|
||
|
|
||
|
describe('setWindowLocation', () => {
|
||
|
const originalLocation = window.location;
|
||
|
|
||
|
afterEach(() => {
|
||
|
window.location = originalLocation;
|
||
|
});
|
||
|
|
||
|
it.each`
|
||
|
url | property | value
|
||
|
${'https://gitlab.com#foo'} | ${'hash'} | ${'#foo'}
|
||
|
${'http://gitlab.com'} | ${'host'} | ${'gitlab.com'}
|
||
|
${'http://gitlab.org'} | ${'hostname'} | ${'gitlab.org'}
|
||
|
${'http://gitlab.org/foo#bar'} | ${'href'} | ${'http://gitlab.org/foo#bar'}
|
||
|
${'http://gitlab.com'} | ${'origin'} | ${'http://gitlab.com'}
|
||
|
${'http://gitlab.com/foo/bar/baz'} | ${'pathname'} | ${'/foo/bar/baz'}
|
||
|
${'https://gitlab.com'} | ${'protocol'} | ${'https:'}
|
||
|
${'http://gitlab.com#foo'} | ${'protocol'} | ${'http:'}
|
||
|
${'http://gitlab.com:8080'} | ${'port'} | ${'8080'}
|
||
|
${'http://gitlab.com?foo=bar&bar=foo'} | ${'search'} | ${'?foo=bar&bar=foo'}
|
||
|
`(
|
||
|
'sets "window.location.$property" to be "$value" when called with: "$url"',
|
||
|
({ url, property, value }) => {
|
||
|
expect(window.location).toBe(originalLocation);
|
||
|
|
||
|
setWindowLocation(url);
|
||
|
|
||
|
expect(window.location[property]).toBe(value);
|
||
|
},
|
||
|
);
|
||
|
|
||
|
it.each([null, 1, undefined, false, '', 'gitlab.com'])(
|
||
|
'throws an error when called with an invalid url: "%s"',
|
||
|
invalidUrl => {
|
||
|
expect(() => setWindowLocation(invalidUrl)).toThrow(new TypeError('Invalid URL'));
|
||
|
expect(window.location).toBe(originalLocation);
|
||
|
},
|
||
|
);
|
||
|
});
|