@@ -347,40 +347,58 @@ describe('KeepAlive', () => {
347
347
} )
348
348
349
349
test ( 'max' , async ( ) => {
350
- const spyA = jest . fn ( )
351
- const spyB = jest . fn ( )
352
- const spyC = jest . fn ( )
353
- const spyAD = jest . fn ( )
354
- const spyBD = jest . fn ( )
355
- const spyCD = jest . fn ( )
350
+ const spyAC = jest . fn ( )
351
+ const spyBC = jest . fn ( )
352
+ const spyCC = jest . fn ( )
353
+ const spyAA = jest . fn ( )
354
+ const spyBA = jest . fn ( )
355
+ const spyCA = jest . fn ( )
356
+ const spyADA = jest . fn ( )
357
+ const spyBDA = jest . fn ( )
358
+ const spyCDA = jest . fn ( )
359
+ const spyAUM = jest . fn ( )
360
+ const spyBUM = jest . fn ( )
361
+ const spyCUM = jest . fn ( )
356
362
357
363
function assertCount ( calls : number [ ] ) {
358
364
expect ( [
359
- spyA . mock . calls . length ,
360
- spyAD . mock . calls . length ,
361
- spyB . mock . calls . length ,
362
- spyBD . mock . calls . length ,
363
- spyC . mock . calls . length ,
364
- spyCD . mock . calls . length
365
+ spyAC . mock . calls . length ,
366
+ spyAA . mock . calls . length ,
367
+ spyADA . mock . calls . length ,
368
+ spyAUM . mock . calls . length ,
369
+ spyBC . mock . calls . length ,
370
+ spyBA . mock . calls . length ,
371
+ spyBDA . mock . calls . length ,
372
+ spyBUM . mock . calls . length ,
373
+ spyCC . mock . calls . length ,
374
+ spyCA . mock . calls . length ,
375
+ spyCDA . mock . calls . length ,
376
+ spyCUM . mock . calls . length
365
377
] ) . toEqual ( calls )
366
378
}
367
379
368
380
const viewRef = ref ( 'a' )
369
381
const views : Record < string , ComponentOptions > = {
370
382
a : {
371
383
render : ( ) => `one` ,
372
- created : spyA ,
373
- unmounted : spyAD
384
+ created : spyAC ,
385
+ activated : spyAA ,
386
+ deactivated : spyADA ,
387
+ unmounted : spyAUM
374
388
} ,
375
389
b : {
376
390
render : ( ) => `two` ,
377
- created : spyB ,
378
- unmounted : spyBD
391
+ created : spyBC ,
392
+ activated : spyBA ,
393
+ deactivated : spyBDA ,
394
+ unmounted : spyBUM
379
395
} ,
380
396
c : {
381
397
render : ( ) => `three` ,
382
- created : spyC ,
383
- unmounted : spyCD
398
+ created : spyCC ,
399
+ activated : spyCA ,
400
+ deactivated : spyCDA ,
401
+ unmounted : spyCUM
384
402
}
385
403
}
386
404
@@ -392,26 +410,26 @@ describe('KeepAlive', () => {
392
410
}
393
411
}
394
412
render ( h ( App ) , root )
395
- assertCount ( [ 1 , 0 , 0 , 0 , 0 , 0 ] )
413
+ assertCount ( [ 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] )
396
414
397
415
viewRef . value = 'b'
398
416
await nextTick ( )
399
- assertCount ( [ 1 , 0 , 1 , 0 , 0 , 0 ] )
417
+ assertCount ( [ 1 , 1 , 1 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ] )
400
418
401
419
viewRef . value = 'c'
402
420
await nextTick ( )
403
421
// should prune A because max cache reached
404
- assertCount ( [ 1 , 1 , 1 , 0 , 1 , 0 ] )
422
+ assertCount ( [ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 1 , 0 , 0 ] )
405
423
406
424
viewRef . value = 'b'
407
425
await nextTick ( )
408
426
// B should be reused, and made latest
409
- assertCount ( [ 1 , 1 , 1 , 0 , 1 , 0 ] )
427
+ assertCount ( [ 1 , 1 , 1 , 1 , 1 , 2 , 1 , 0 , 1 , 1 , 1 , 0 ] )
410
428
411
429
viewRef . value = 'a'
412
430
await nextTick ( )
413
431
// C should be pruned because B was used last so C is the oldest cached
414
- assertCount ( [ 2 , 1 , 1 , 0 , 1 , 1 ] )
432
+ assertCount ( [ 2 , 2 , 1 , 1 , 1 , 2 , 2 , 0 , 1 , 1 , 1 , 1 ] )
415
433
} )
416
434
} )
417
435
0 commit comments