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 = (
55 ...args : unknown [ ]
66) => {
77 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
1519}
1620
1721/**
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