@@ -280,6 +280,81 @@ describe('ReactShallowRenderer with hooks', () => {
280
280
'call effect' ,
281
281
] ) ;
282
282
} ) ;
283
+
284
+ it ( 'should trigger effects and cleanup depending on inputs' , ( ) => {
285
+ let _setFriend ;
286
+ const happenings = [ ] ;
287
+
288
+ function SomeComponent ( ) {
289
+ const [ friend , setFriend ] = React . useState ( 'Bons' ) ;
290
+ const [ cat ] = React . useState ( 'Muskus' ) ;
291
+ _setFriend = setFriend ;
292
+
293
+ React . useEffect (
294
+ ( ) => {
295
+ happenings . push ( 'call friend effect' ) ;
296
+ return ( ) => {
297
+ happenings . push ( 'cleanup friend effect' ) ;
298
+ } ;
299
+ } ,
300
+ [ friend ] ,
301
+ ) ;
302
+
303
+ React . useEffect ( ( ) => {
304
+ happenings . push ( 'call empty effect' ) ;
305
+ return ( ) => {
306
+ happenings . push ( 'cleanup empty effect' ) ;
307
+ } ;
308
+ } ) ;
309
+
310
+ React . useEffect (
311
+ ( ) => {
312
+ happenings . push ( 'call cat effect' ) ;
313
+ return ( ) => {
314
+ happenings . push ( 'cleanup cat effect' ) ;
315
+ } ;
316
+ } ,
317
+ [ cat ] ,
318
+ ) ;
319
+
320
+ React . useEffect (
321
+ ( ) => {
322
+ happenings . push ( 'call both effect' ) ;
323
+ return ( ) => {
324
+ happenings . push ( 'cleanup both effect' ) ;
325
+ } ;
326
+ } ,
327
+ [ friend , cat ] ,
328
+ ) ;
329
+
330
+ return (
331
+ < div >
332
+ Hello { friend } with { cat }
333
+ </ div >
334
+ ) ;
335
+ }
336
+
337
+ const shallowRenderer = createRenderer ( { callEffects : true } ) ;
338
+ shallowRenderer . render ( < SomeComponent /> ) ;
339
+
340
+ expect ( happenings ) . toEqual ( [
341
+ 'call friend effect' ,
342
+ 'call empty effect' ,
343
+ 'call cat effect' ,
344
+ 'call both effect' ,
345
+ ] ) ;
346
+
347
+ happenings . splice ( 0 ) ;
348
+ _setFriend ( 'Maryam' ) ;
349
+ expect ( happenings ) . toEqual ( [
350
+ 'cleanup friend effect' ,
351
+ 'call friend effect' ,
352
+ 'cleanup empty effect' ,
353
+ 'call empty effect' ,
354
+ 'cleanup both effect' ,
355
+ 'call both effect' ,
356
+ ] ) ;
357
+ } ) ;
283
358
} ) ;
284
359
285
360
it ( 'should work with useRef' , ( ) => {
0 commit comments