UNPKG

1.1 kBPlain TextView Raw
1import { createDraftSafeSelector, createSelector } from '@reduxjs/toolkit'
2import { produce } from 'immer'
3
4type State = { value: number }
5const selectSelf = (state: State) => state
6
7test('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
20test('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})