@@ -477,6 +477,79 @@ describe('Component keep-alive', () => {
477
477
} ) . then ( done )
478
478
} )
479
479
480
+ it ( 'max' , done => {
481
+ const spyA = jasmine . createSpy ( )
482
+ const spyB = jasmine . createSpy ( )
483
+ const spyC = jasmine . createSpy ( )
484
+ const spyAD = jasmine . createSpy ( )
485
+ const spyBD = jasmine . createSpy ( )
486
+ const spyCD = jasmine . createSpy ( )
487
+
488
+ function assertCount ( calls ) {
489
+ expect ( [
490
+ spyA . calls . count ( ) ,
491
+ spyAD . calls . count ( ) ,
492
+ spyB . calls . count ( ) ,
493
+ spyBD . calls . count ( ) ,
494
+ spyC . calls . count ( ) ,
495
+ spyCD . calls . count ( )
496
+ ] ) . toEqual ( calls )
497
+ }
498
+
499
+ const vm = new Vue ( {
500
+ template : `
501
+ <keep-alive max="2">
502
+ <component :is="n"></component>
503
+ </keep-alive>
504
+ ` ,
505
+ data : {
506
+ n : 'aa'
507
+ } ,
508
+ components : {
509
+ aa : {
510
+ template : '<div>a</div>' ,
511
+ created : spyA ,
512
+ destroyed : spyAD
513
+ } ,
514
+ bb : {
515
+ template : '<div>bbb</div>' ,
516
+ created : spyB ,
517
+ destroyed : spyBD
518
+ } ,
519
+ cc : {
520
+ template : '<div>ccc</div>' ,
521
+ created : spyC ,
522
+ destroyed : spyCD
523
+ }
524
+ }
525
+ } ) . $mount ( )
526
+
527
+ assertCount ( [ 1 , 0 , 0 , 0 , 0 , 0 ] )
528
+ vm . n = 'bb'
529
+ waitForUpdate ( ( ) => {
530
+ assertCount ( [ 1 , 0 , 1 , 0 , 0 , 0 ] )
531
+ vm . n = 'cc'
532
+ } ) . then ( ( ) => {
533
+ // should prune A because max cache reached
534
+ assertCount ( [ 1 , 1 , 1 , 0 , 1 , 0 ] )
535
+ vm . n = 'bb'
536
+ } ) . then ( ( ) => {
537
+ // B should be reused, and made latest
538
+ assertCount ( [ 1 , 1 , 1 , 0 , 1 , 0 ] )
539
+ vm . n = 'aa'
540
+ } ) . then ( ( ) => {
541
+ // C should be pruned because B was used last so C is the oldest cached
542
+ assertCount ( [ 2 , 1 , 1 , 0 , 1 , 1 ] )
543
+ } ) . then ( done )
544
+ } )
545
+
546
+ it ( 'should warn unknown component inside' , ( ) => {
547
+ new Vue ( {
548
+ template : `<keep-alive><foo/></keep-alive>`
549
+ } ) . $mount ( )
550
+ expect ( `Unknown custom element: <foo>` ) . toHaveBeenWarned ( )
551
+ } )
552
+
480
553
if ( ! isIE9 ) {
481
554
it ( 'with transition-mode out-in' , done => {
482
555
let next
@@ -946,71 +1019,5 @@ describe('Component keep-alive', () => {
946
1019
} ) . then ( done )
947
1020
}
948
1021
} )
949
-
950
- it ( 'max' , done => {
951
- const spyA = jasmine . createSpy ( )
952
- const spyB = jasmine . createSpy ( )
953
- const spyC = jasmine . createSpy ( )
954
- const spyAD = jasmine . createSpy ( )
955
- const spyBD = jasmine . createSpy ( )
956
- const spyCD = jasmine . createSpy ( )
957
-
958
- function assertCount ( calls ) {
959
- expect ( [
960
- spyA . calls . count ( ) ,
961
- spyAD . calls . count ( ) ,
962
- spyB . calls . count ( ) ,
963
- spyBD . calls . count ( ) ,
964
- spyC . calls . count ( ) ,
965
- spyCD . calls . count ( )
966
- ] ) . toEqual ( calls )
967
- }
968
-
969
- const vm = new Vue ( {
970
- template : `
971
- <keep-alive max="2">
972
- <component :is="n"></component>
973
- </keep-alive>
974
- ` ,
975
- data : {
976
- n : 'aa'
977
- } ,
978
- components : {
979
- aa : {
980
- template : '<div>a</div>' ,
981
- created : spyA ,
982
- destroyed : spyAD
983
- } ,
984
- bb : {
985
- template : '<div>bbb</div>' ,
986
- created : spyB ,
987
- destroyed : spyBD
988
- } ,
989
- cc : {
990
- template : '<div>ccc</div>' ,
991
- created : spyC ,
992
- destroyed : spyCD
993
- }
994
- }
995
- } ) . $mount ( )
996
-
997
- assertCount ( [ 1 , 0 , 0 , 0 , 0 , 0 ] )
998
- vm . n = 'bb'
999
- waitForUpdate ( ( ) => {
1000
- assertCount ( [ 1 , 0 , 1 , 0 , 0 , 0 ] )
1001
- vm . n = 'cc'
1002
- } ) . then ( ( ) => {
1003
- // should prune A because max cache reached
1004
- assertCount ( [ 1 , 1 , 1 , 0 , 1 , 0 ] )
1005
- vm . n = 'bb'
1006
- } ) . then ( ( ) => {
1007
- // B should be reused, and made latest
1008
- assertCount ( [ 1 , 1 , 1 , 0 , 1 , 0 ] )
1009
- vm . n = 'aa'
1010
- } ) . then ( ( ) => {
1011
- // C should be pruned because B was used last so C is the oldest cached
1012
- assertCount ( [ 2 , 1 , 1 , 0 , 1 , 1 ] )
1013
- } ) . then ( done )
1014
- } )
1015
1022
}
1016
1023
} )
0 commit comments