File tree Expand file tree Collapse file tree 2 files changed +60
-7
lines changed Expand file tree Collapse file tree 2 files changed +60
-7
lines changed Original file line number Diff line number Diff line change @@ -5,13 +5,17 @@ export const createDraftSafeSelectorCreator: typeof createSelectorCreator = (
5
5
...args : unknown [ ]
6
6
) => {
7
7
const createSelector = ( createSelectorCreator as any ) ( ...args )
8
- return ( ...args : unknown [ ] ) => {
9
- const selector = createSelector ( ...args )
10
- const wrappedSelector = ( value : unknown , ...rest : unknown [ ] ) =>
11
- selector ( isDraft ( value ) ? current ( value ) : value , ...rest )
12
- Object . assign ( wrappedSelector , selector )
13
- return wrappedSelector as any
14
- }
8
+ const createDraftSafeSelector = Object . assign (
9
+ ( ...args : unknown [ ] ) => {
10
+ const selector = createSelector ( ...args )
11
+ const wrappedSelector = ( value : unknown , ...rest : unknown [ ] ) =>
12
+ selector ( isDraft ( value ) ? current ( value ) : value , ...rest )
13
+ Object . assign ( wrappedSelector , selector )
14
+ return wrappedSelector as any
15
+ } ,
16
+ { withTypes : ( ) => createDraftSafeSelector }
17
+ )
18
+ return createDraftSafeSelector
15
19
}
16
20
17
21
/**
Original file line number Diff line number Diff line change
1
+ import { createDraftSafeSelector } from '@reduxjs/toolkit'
2
+
3
+ interface Todo {
4
+ id : number
5
+ completed : boolean
6
+ }
7
+
8
+ interface Alert {
9
+ id : number
10
+ read : boolean
11
+ }
12
+
13
+ interface RootState {
14
+ todos : Todo [ ]
15
+ alerts : Alert [ ]
16
+ }
17
+
18
+ const rootState : RootState = {
19
+ todos : [
20
+ { id : 0 , completed : false } ,
21
+ { id : 1 , completed : false } ,
22
+ ] ,
23
+ alerts : [
24
+ { id : 0 , read : false } ,
25
+ { id : 1 , read : false } ,
26
+ ] ,
27
+ }
28
+
29
+ describe ( createDraftSafeSelector . withTypes , ( ) => {
30
+ const createTypedDraftSafeSelector =
31
+ createDraftSafeSelector . withTypes < RootState > ( )
32
+
33
+ test ( 'should return createDraftSafeSelector' , ( ) => {
34
+ expect ( createTypedDraftSafeSelector . withTypes ) . toEqual ( expect . any ( Function ) )
35
+
36
+ expect ( createTypedDraftSafeSelector . withTypes ( ) . withTypes ) . toEqual (
37
+ expect . any ( Function )
38
+ )
39
+
40
+ expect ( createTypedDraftSafeSelector ) . toBe ( createDraftSafeSelector )
41
+
42
+ const selectTodoIds = createTypedDraftSafeSelector (
43
+ [ ( state ) => state . todos ] ,
44
+ ( todos ) => todos . map ( ( { id } ) => id )
45
+ )
46
+
47
+ expect ( selectTodoIds ( rootState ) ) . to . be . an ( 'array' ) . that . is . not . empty
48
+ } )
49
+ } )
You can’t perform that action at this time.
0 commit comments