@@ -213,12 +213,50 @@ describe('reconciler', () => {
213
213
214
214
incrementGeneration ( )
215
215
wrapper . setProps ( { update : 'now' } )
216
- expect ( First . rendered ) . toHaveBeenCalledTimes ( 4 )
216
+ expect ( First . rendered ) . toHaveBeenCalledTimes ( 3 )
217
+ expect ( Second . rendered ) . toHaveBeenCalledTimes ( 3 )
218
+
219
+ incrementGeneration ( )
220
+ wrapper . setProps ( { second : false } )
221
+ expect ( First . rendered ) . toHaveBeenCalledTimes ( 5 )
217
222
expect ( Second . rendered ) . toHaveBeenCalledTimes ( 4 )
218
223
224
+ expect ( First . unmounted ) . toHaveBeenCalledTimes ( 0 )
225
+ expect ( Second . unmounted ) . toHaveBeenCalledTimes ( 1 )
226
+ } )
227
+
228
+ it ( 'should use new children branch during reconcile for full components' , ( ) => {
229
+ const First = spyComponent ( ( ) => < u > 1</ u > , 'test' , '1' )
230
+ const Second = spyComponent ( ( ) => < u > 2</ u > , 'test' , '2' )
231
+
232
+ const Section = ( { children } ) => < div > { children } </ div >
233
+
234
+ const App = ( { second } ) => (
235
+ < div >
236
+ < div >
237
+ < Section >
238
+ < First . Component />
239
+ { second && < Second . Component /> }
240
+ </ Section >
241
+ </ div >
242
+ </ div >
243
+ )
244
+
245
+ const Mounter = ( { second } ) => < App second = { second } />
246
+
247
+ const wrapper = mount ( < Mounter second /> )
248
+
249
+ expect ( First . rendered ) . toHaveBeenCalledTimes ( 1 )
250
+ expect ( Second . rendered ) . toHaveBeenCalledTimes ( 1 )
251
+
252
+ incrementGeneration ( )
253
+ wrapper . setProps ( { update : 'now' } )
254
+ expect ( First . rendered ) . toHaveBeenCalledTimes ( 3 )
255
+ expect ( Second . rendered ) . toHaveBeenCalledTimes ( 3 )
256
+
219
257
incrementGeneration ( )
220
258
wrapper . setProps ( { second : false } )
221
- expect ( First . rendered ) . toHaveBeenCalledTimes ( 7 )
259
+ expect ( First . rendered ) . toHaveBeenCalledTimes ( 5 )
222
260
expect ( Second . rendered ) . toHaveBeenCalledTimes ( 4 )
223
261
224
262
expect ( First . unmounted ) . toHaveBeenCalledTimes ( 0 )
0 commit comments