-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathQueryStateUpdater.test.js
90 lines (84 loc) · 2.15 KB
/
QueryStateUpdater.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import { render } from '@folio/jest-config-stripes/testing-library/react';
import { QueryClientProvider, QueryClient } from 'react-query';
import { MemoryRouter as Router, Route } from 'react-router-dom';
import QueryStateUpdater from './QueryStateUpdater';
const mockUpdateQueryResource = jest.fn();
jest.mock('../../locationService', () => ({
...jest.requireActual('../../locationService'),
updateLocation: jest.fn(),
updateQueryResource: jest.fn(() => mockUpdateQueryResource()),
getCurrentModule: jest.fn(() => true)
}));
const mockUnsubscribe = jest.fn();
const stripes = {
store: {
subscribe: jest.fn(() => mockUnsubscribe)
}
};
describe('QueryStateUpdater', () => {
let qc;
let wrapper;
beforeAll(() => {
qc = new QueryClient();
wrapper = (testLocation = { pathname: '/initial' }) => ({ children }) => {
qc = new QueryClient();
return (
<Router initialEntries={['/initial']}>
<QueryClientProvider client={qc}>
<Route
path="*"
location={testLocation}
>
{children}
</Route>
</QueryClientProvider>
</Router>
);
};
});
it('renders', () => {
expect(() => render(
<QueryStateUpdater queryClient={qc} stripes={stripes} />,
{ wrapper: wrapper() }
)).not.toThrow();
});
it('updatesQuery on mount', () => {
let testVal = {
hash: '',
key: 'f727ww',
pathname: '/initial',
search: '',
state: undefined
};
const { rerender } = render(
<QueryStateUpdater
stripes={stripes}
queryClient={qc}
/>,
{ wrapper: wrapper(testVal) }
);
testVal = {
hash: '',
key: 'f727w2',
pathname: '/updated',
search: '',
state: undefined
};
rerender(
<QueryStateUpdater
stripes={stripes}
queryClient={qc}
location={testVal}
/>,
{ wrapper: wrapper(testVal) }
);
expect(() => rerender(
<QueryStateUpdater
stripes={stripes}
queryClient={qc}
location={testVal}
/>,
{ wrapper: wrapper(testVal) }
)).not.toThrow();
});
});