// Jest 26 with latest JSDOM prevents location from being proxied
// Instead we can redefine location on window, and then restore.
export function mockWindowLocation(
mockLocation: Partial<Location> = {
href: '',
assign: jest.fn(),
reload: jest.fn(),
}
) {
const savedLocation = window.location;
beforeEach(() => {
Object.defineProperty(window, 'location', {
writable: true,
value: mockLocation,
});
});
afterEach(() => {
window.location = savedLocation;
});
return (mockLocation: Partial<Location>) => {
Object.defineProperty(window, 'location', {
writable: true,
value: mockLocation,
});
};
}