1 | import { createSelector } from 'reselect'
|
2 | import { createDraftSafeSelector } from './createDraftSafeSelector'
|
3 | import { produce } from 'immer'
|
4 |
|
5 | type State = { value: number }
|
6 | const selectSelf = (state: State) => state
|
7 |
|
8 | test('handles normal values correctly', () => {
|
9 | const unsafeSelector = createSelector(selectSelf, x => x.value)
|
10 | const draftSafeSelector = createDraftSafeSelector(selectSelf, x => x.value)
|
11 |
|
12 | let state = { value: 1 }
|
13 | expect(unsafeSelector(state)).toBe(1)
|
14 | expect(draftSafeSelector(state)).toBe(1)
|
15 |
|
16 | state = { value: 2 }
|
17 | expect(unsafeSelector(state)).toBe(2)
|
18 | expect(draftSafeSelector(state)).toBe(2)
|
19 | })
|
20 |
|
21 | test('handles drafts correctly', () => {
|
22 | const unsafeSelector = createSelector(selectSelf, state => state.value)
|
23 | const draftSafeSelector = createDraftSafeSelector(
|
24 | selectSelf,
|
25 | state => state.value
|
26 | )
|
27 |
|
28 | produce({ value: 1 }, state => {
|
29 | expect(unsafeSelector(state)).toBe(1)
|
30 | expect(draftSafeSelector(state)).toBe(1)
|
31 |
|
32 | state.value = 2
|
33 |
|
34 | expect(unsafeSelector(state)).toBe(1)
|
35 | expect(draftSafeSelector(state)).toBe(2)
|
36 | })
|
37 | })
|