@@ -22,6 +22,12 @@ const numberSlice = createSlice({
22
22
23
23
const booleanReducer = createReducer ( false , ( ) => { } )
24
24
25
+ const counterReducer = createSlice ( {
26
+ name : 'counter' ,
27
+ initialState : ( ) => ( { value : 0 } ) ,
28
+ reducers : { } ,
29
+ } )
30
+
25
31
// mimic - we can't use RTKQ here directly
26
32
const api = {
27
33
reducerPath : 'api' as const ,
@@ -144,6 +150,7 @@ describe('combineSlices', () => {
144
150
describe ( 'selector' , ( ) => {
145
151
const combinedReducer = combineSlices ( stringSlice ) . withLazyLoadedSlices < {
146
152
boolean : boolean
153
+ counter : { value : number }
147
154
} > ( )
148
155
149
156
const uninjectedState = combinedReducer ( undefined , dummyAction ( ) )
@@ -189,5 +196,20 @@ describe('combineSlices', () => {
189
196
booleanReducer . getInitialState ( ) ,
190
197
)
191
198
} )
199
+ it ( 'caches initial state' , ( ) => {
200
+ const beforeInject = combinedReducer ( undefined , dummyAction ( ) )
201
+ const injectedReducer = combinedReducer . inject ( counterReducer )
202
+ const selectCounter = injectedReducer . selector ( ( state ) => state . counter )
203
+ const counter = selectCounter ( beforeInject )
204
+ expect ( counter ) . toBe ( selectCounter ( beforeInject ) )
205
+
206
+ injectedReducer . inject (
207
+ { reducerPath : 'counter' , reducer : ( ) => ( { value : 0 } ) } ,
208
+ { overrideExisting : true } ,
209
+ )
210
+ const counter2 = selectCounter ( beforeInject )
211
+ expect ( counter2 ) . not . toBe ( counter )
212
+ expect ( counter2 ) . toBe ( selectCounter ( beforeInject ) )
213
+ } )
192
214
} )
193
215
} )
0 commit comments