@@ -598,77 +598,47 @@ describe('useInfiniteQuery', () => {
598598
599599 it ( 'should silently cancel any ongoing fetch when fetching more' , async ( ) => {
600600 const key = queryKey ( )
601- const states : UseInfiniteQueryResult < InfiniteData < number > > [ ] = [ ]
602601
603602 function Page ( ) {
604603 const start = 10
605- const state = useInfiniteQuery ( {
606- queryKey : key ,
607- queryFn : async ( { pageParam } ) => {
608- await sleep ( 50 )
609- return Number ( pageParam )
610- } ,
611- defaultPageParam : start ,
612- getNextPageParam : ( lastPage ) => lastPage + 1 ,
613- notifyOnChangeProps : 'all' ,
614- } )
615-
616- states . push ( state )
617-
618- const { refetch, fetchNextPage } = state
619-
620- React . useEffect ( ( ) => {
621- setActTimeout ( ( ) => {
622- refetch ( )
623- } , 100 )
624- setActTimeout ( ( ) => {
625- fetchNextPage ( )
626- } , 110 )
627- } , [ fetchNextPage , refetch ] )
604+ const { data, fetchNextPage, refetch, status, fetchStatus } =
605+ useInfiniteQuery ( {
606+ queryKey : key ,
607+ queryFn : async ( { pageParam } ) => {
608+ await sleep ( 50 )
609+ return Number ( pageParam )
610+ } ,
611+ defaultPageParam : start ,
612+ getNextPageParam : ( lastPage ) => lastPage + 1 ,
613+ } )
628614
629- return null
615+ return (
616+ < div >
617+ < button onClick = { ( ) => fetchNextPage ( ) } > fetchNextPage</ button >
618+ < button onClick = { ( ) => refetch ( ) } > refetch</ button >
619+ < div > data: { JSON . stringify ( data ) } </ div >
620+ < div >
621+ status: { status } , { fetchStatus }
622+ </ div >
623+ </ div >
624+ )
630625 }
631626
632- renderWithClient ( queryClient , < Page /> )
627+ const rendered = renderWithClient ( queryClient , < Page /> )
633628
634- await sleep ( 300 )
629+ await waitFor ( ( ) => rendered . getByText ( 'status: success, idle' ) )
630+ await waitFor ( ( ) =>
631+ rendered . getByText ( 'data: {"pages":[10],"pageParams":[10]}' ) ,
632+ )
635633
636- expect ( states . length ) . toBe ( 5 )
637- expect ( states [ 0 ] ) . toMatchObject ( {
638- hasNextPage : false ,
639- data : undefined ,
640- isFetching : true ,
641- isFetchingNextPage : false ,
642- isSuccess : false ,
643- } )
644- expect ( states [ 1 ] ) . toMatchObject ( {
645- hasNextPage : true ,
646- data : { pages : [ 10 ] } ,
647- isFetching : false ,
648- isFetchingNextPage : false ,
649- isSuccess : true ,
650- } )
651- expect ( states [ 2 ] ) . toMatchObject ( {
652- hasNextPage : true ,
653- data : { pages : [ 10 ] } ,
654- isFetching : true ,
655- isFetchingNextPage : false ,
656- isSuccess : true ,
657- } )
658- expect ( states [ 3 ] ) . toMatchObject ( {
659- hasNextPage : true ,
660- data : { pages : [ 10 ] } ,
661- isFetching : true ,
662- isFetchingNextPage : true ,
663- isSuccess : true ,
664- } )
665- expect ( states [ 4 ] ) . toMatchObject ( {
666- hasNextPage : true ,
667- data : { pages : [ 10 , 11 ] } ,
668- isFetching : false ,
669- isFetchingNextPage : false ,
670- isSuccess : true ,
671- } )
634+ fireEvent . click ( rendered . getByRole ( 'button' , { name : / r e f e t c h / i } ) )
635+ await waitFor ( ( ) => rendered . getByText ( 'status: success, fetching' ) )
636+ fireEvent . click ( rendered . getByRole ( 'button' , { name : / f e t c h N e x t P a g e / i } ) )
637+
638+ await waitFor ( ( ) => rendered . getByText ( 'status: success, idle' ) )
639+ await waitFor ( ( ) =>
640+ rendered . getByText ( 'data: {"pages":[10,11],"pageParams":[10,11]}' ) ,
641+ )
672642 } )
673643
674644 it ( 'should silently cancel an ongoing fetchNextPage request when another fetchNextPage is invoked' , async ( ) => {
0 commit comments