@@ -429,6 +429,290 @@ describe('useLoadMore', () => {
429
429
}
430
430
} ) ;
431
431
432
+ test ( 'refresh should work, case: 1' , async ( ) => {
433
+ const wrapper = shallowMount (
434
+ defineComponent ( {
435
+ setup ( ) {
436
+ const {
437
+ dataList,
438
+ loadingMore,
439
+ loading,
440
+ loadMore,
441
+ refresh,
442
+ refreshing,
443
+ } = useLoadMore ( normalRequest ) ;
444
+ return ( ) => (
445
+ < div >
446
+ < div class = "dataList" > { dataList . value . length || 0 } </ div >
447
+ < div class = "loadingMore" > { `${ loadingMore . value } ` } </ div >
448
+ < div class = "loading" > { `${ loading . value } ` } </ div >
449
+ < div class = "refreshing" > { `${ refreshing . value } ` } </ div >
450
+ < div
451
+ class = "loadMore"
452
+ onClick = { ( ) => {
453
+ loadMore ( ) ;
454
+ } }
455
+ />
456
+ < div
457
+ class = "refresh"
458
+ onClick = { ( ) => {
459
+ refresh ( ) ;
460
+ } }
461
+ />
462
+ </ div >
463
+ ) ;
464
+ } ,
465
+ } ) ,
466
+ ) ;
467
+
468
+ const dataListEl = wrapper . find ( '.dataList' ) ;
469
+ const loadingMoreEl = wrapper . find ( '.loadingMore' ) ;
470
+ const loadingEl = wrapper . find ( '.loading' ) ;
471
+ const loadMoreEl = wrapper . find ( '.loadMore' ) ;
472
+ const refreshEl = wrapper . find ( '.refresh' ) ;
473
+ const refreshingEl = wrapper . find ( '.refreshing' ) ;
474
+
475
+ expect ( loadingEl . text ( ) ) . toBe ( 'true' ) ;
476
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
477
+ await waitForTime ( 1000 ) ;
478
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
479
+ expect ( loadingEl . text ( ) ) . toBe ( 'false' ) ;
480
+ expect ( dataListEl . text ( ) ) . toBe ( '10' ) ;
481
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
482
+
483
+ for ( let index = 1 ; index <= 5 ; index ++ ) {
484
+ await loadMoreEl . trigger ( 'click' ) ;
485
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'true' ) ;
486
+ expect ( loadingEl . text ( ) ) . toBe ( 'true' ) ;
487
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
488
+ await waitForTime ( 1000 ) ;
489
+ expect ( loadingEl . text ( ) ) . toBe ( 'false' ) ;
490
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
491
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
492
+ expect ( dataListEl . text ( ) ) . toBe ( `${ 10 + index * 10 } ` ) ;
493
+ }
494
+
495
+ expect ( dataListEl . text ( ) ) . toBe ( '60' ) ;
496
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
497
+ expect ( loadingEl . text ( ) ) . toBe ( 'false' ) ;
498
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
499
+
500
+ await refreshEl . trigger ( 'click' ) ;
501
+ expect ( dataListEl . text ( ) ) . toBe ( '60' ) ;
502
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
503
+ expect ( loadingEl . text ( ) ) . toBe ( 'true' ) ;
504
+ expect ( refreshingEl . text ( ) ) . toBe ( 'true' ) ;
505
+
506
+ await waitForTime ( 1000 ) ;
507
+ expect ( dataListEl . text ( ) ) . toBe ( '10' ) ;
508
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
509
+ expect ( loadingEl . text ( ) ) . toBe ( 'false' ) ;
510
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
511
+ } ) ;
512
+
513
+ test ( 'refresh should work, case: 2' , async ( ) => {
514
+ const wrapper = shallowMount (
515
+ defineComponent ( {
516
+ setup ( ) {
517
+ const {
518
+ dataList,
519
+ loadingMore,
520
+ loading,
521
+ refresh,
522
+ refreshing,
523
+ } = useLoadMore ( normalRequest ) ;
524
+ return ( ) => (
525
+ < div >
526
+ < div class = "dataList" > { dataList . value . length || 0 } </ div >
527
+ < div class = "loadingMore" > { `${ loadingMore . value } ` } </ div >
528
+ < div class = "loading" > { `${ loading . value } ` } </ div >
529
+ < div class = "refreshing" > { `${ refreshing . value } ` } </ div >
530
+ < div
531
+ class = "refresh"
532
+ onClick = { ( ) => {
533
+ refresh ( ) ;
534
+ } }
535
+ />
536
+ </ div >
537
+ ) ;
538
+ } ,
539
+ } ) ,
540
+ ) ;
541
+
542
+ const dataListEl = wrapper . find ( '.dataList' ) ;
543
+ const loadingMoreEl = wrapper . find ( '.loadingMore' ) ;
544
+ const loadingEl = wrapper . find ( '.loading' ) ;
545
+ const refreshEl = wrapper . find ( '.refresh' ) ;
546
+ const refreshingEl = wrapper . find ( '.refreshing' ) ;
547
+
548
+ expect ( loadingEl . text ( ) ) . toBe ( 'true' ) ;
549
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
550
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
551
+ await refreshEl . trigger ( 'click' ) ;
552
+ expect ( loadingEl . text ( ) ) . toBe ( 'true' ) ;
553
+ expect ( refreshingEl . text ( ) ) . toBe ( 'true' ) ;
554
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
555
+ await waitForTime ( 1000 ) ;
556
+ expect ( dataListEl . text ( ) ) . toBe ( '10' ) ;
557
+ } ) ;
558
+
559
+ test ( 'cancel should work, case: 1' , async ( ) => {
560
+ const wrapper = shallowMount (
561
+ defineComponent ( {
562
+ setup ( ) {
563
+ const {
564
+ dataList,
565
+ loadingMore,
566
+ loading,
567
+ loadMore,
568
+ refresh,
569
+ refreshing,
570
+ cancel,
571
+ reload,
572
+ } = useLoadMore ( normalRequest ) ;
573
+ return ( ) => (
574
+ < div >
575
+ < div class = "dataList" > { dataList . value . length || 0 } </ div >
576
+ < div class = "loadingMore" > { `${ loadingMore . value } ` } </ div >
577
+ < div class = "loading" > { `${ loading . value } ` } </ div >
578
+ < div class = "refreshing" > { `${ refreshing . value } ` } </ div >
579
+ < div
580
+ class = "loadMore"
581
+ onClick = { ( ) => {
582
+ loadMore ( ) ;
583
+ } }
584
+ />
585
+ < div
586
+ class = "refresh"
587
+ onClick = { ( ) => {
588
+ refresh ( ) ;
589
+ } }
590
+ />
591
+ < div
592
+ class = "cancel"
593
+ onClick = { ( ) => {
594
+ cancel ( ) ;
595
+ } }
596
+ />
597
+ < div
598
+ class = "reload"
599
+ onClick = { ( ) => {
600
+ reload ( ) ;
601
+ } }
602
+ />
603
+ </ div >
604
+ ) ;
605
+ } ,
606
+ } ) ,
607
+ ) ;
608
+
609
+ const dataListEl = wrapper . find ( '.dataList' ) ;
610
+ const loadingMoreEl = wrapper . find ( '.loadingMore' ) ;
611
+ const loadingEl = wrapper . find ( '.loading' ) ;
612
+ const loadMoreEl = wrapper . find ( '.loadMore' ) ;
613
+ const refreshEl = wrapper . find ( '.refresh' ) ;
614
+ const refreshingEl = wrapper . find ( '.refreshing' ) ;
615
+ const cancelEl = wrapper . find ( '.cancel' ) ;
616
+ const reloadEl = wrapper . find ( '.reload' ) ;
617
+
618
+ expect ( loadingEl . text ( ) ) . toBe ( 'true' ) ;
619
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
620
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
621
+ await waitForTime ( 1000 ) ;
622
+ expect ( loadingEl . text ( ) ) . toBe ( 'false' ) ;
623
+ expect ( dataListEl . text ( ) ) . toBe ( '10' ) ;
624
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
625
+
626
+ // trigger loadMore
627
+ await loadMoreEl . trigger ( 'click' ) ;
628
+ expect ( loadingEl . text ( ) ) . toBe ( 'true' ) ;
629
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'true' ) ;
630
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
631
+ await waitForTime ( 100 ) ;
632
+ // trigger cancel
633
+ await cancelEl . trigger ( 'click' ) ;
634
+ expect ( loadingEl . text ( ) ) . toBe ( 'false' ) ;
635
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
636
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
637
+ expect ( dataListEl . text ( ) ) . toBe ( '10' ) ;
638
+
639
+ // trigger refresh
640
+ await refreshEl . trigger ( 'click' ) ;
641
+ expect ( loadingEl . text ( ) ) . toBe ( 'true' ) ;
642
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
643
+ expect ( refreshingEl . text ( ) ) . toBe ( 'true' ) ;
644
+ await waitForTime ( 100 ) ;
645
+ // trigger cancel
646
+ await cancelEl . trigger ( 'click' ) ;
647
+ expect ( loadingEl . text ( ) ) . toBe ( 'false' ) ;
648
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
649
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
650
+ expect ( dataListEl . text ( ) ) . toBe ( '10' ) ;
651
+
652
+ // trigger reload
653
+ await reloadEl . trigger ( 'click' ) ;
654
+ expect ( loadingEl . text ( ) ) . toBe ( 'true' ) ;
655
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
656
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
657
+ await waitForTime ( 100 ) ;
658
+ // trigger cancel
659
+ await cancelEl . trigger ( 'click' ) ;
660
+ expect ( loadingEl . text ( ) ) . toBe ( 'false' ) ;
661
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
662
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
663
+ expect ( dataListEl . text ( ) ) . toBe ( '0' ) ;
664
+ } ) ;
665
+
666
+ test ( 'cancel should work, case: 2' , async ( ) => {
667
+ const wrapper = shallowMount (
668
+ defineComponent ( {
669
+ setup ( ) {
670
+ const {
671
+ dataList,
672
+ loadingMore,
673
+ loading,
674
+ refreshing,
675
+ cancel,
676
+ } = useLoadMore ( normalRequest ) ;
677
+ return ( ) => (
678
+ < div >
679
+ < div class = "dataList" > { dataList . value . length || 0 } </ div >
680
+ < div class = "loadingMore" > { `${ loadingMore . value } ` } </ div >
681
+ < div class = "loading" > { `${ loading . value } ` } </ div >
682
+ < div class = "refreshing" > { `${ refreshing . value } ` } </ div >
683
+ < div
684
+ class = "cancel"
685
+ onClick = { ( ) => {
686
+ cancel ( ) ;
687
+ } }
688
+ />
689
+ </ div >
690
+ ) ;
691
+ } ,
692
+ } ) ,
693
+ ) ;
694
+
695
+ const dataListEl = wrapper . find ( '.dataList' ) ;
696
+ const loadingMoreEl = wrapper . find ( '.loadingMore' ) ;
697
+ const loadingEl = wrapper . find ( '.loading' ) ;
698
+ const refreshingEl = wrapper . find ( '.refreshing' ) ;
699
+ const cancelEl = wrapper . find ( '.cancel' ) ;
700
+
701
+ expect ( loadingEl . text ( ) ) . toBe ( 'true' ) ;
702
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
703
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
704
+
705
+ // trigger cancel
706
+ await cancelEl . trigger ( 'click' ) ;
707
+ expect ( loadingEl . text ( ) ) . toBe ( 'false' ) ;
708
+ expect ( refreshingEl . text ( ) ) . toBe ( 'false' ) ;
709
+ expect ( loadingMoreEl . text ( ) ) . toBe ( 'false' ) ;
710
+ expect ( dataListEl . text ( ) ) . toBe ( '0' ) ;
711
+
712
+ await waitForTime ( 1000 ) ;
713
+ expect ( dataListEl . text ( ) ) . toBe ( '0' ) ;
714
+ } ) ;
715
+
432
716
test ( 'useLoadMore when request error' , async ( ) => {
433
717
const wrapper = shallowMount (
434
718
defineComponent ( {
0 commit comments