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