@@ -429,6 +429,290 @@ describe('useLoadMore', () => {
429429 }
430430 } ) ;
431431
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+
432716 test ( 'useLoadMore when request error' , async ( ) => {
433717 const wrapper = shallowMount (
434718 defineComponent ( {
0 commit comments