text: 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);
      },
    );
  });
  