@@ -666,4 +666,61 @@ describe('InfiniteQuery', () => {
666666 > ( ) ;
667667 } ) ;
668668 } ) ;
669+
670+ describe ( '"start" method' , ( ) => {
671+ it ( 'should call queryFn and fetch data' , async ( ) => {
672+ const queryFnSpy = vi . fn ( async ( { pageParam = 0 } ) => {
673+ return Array . from ( { length : 3 } , ( _ , i ) => `Item ${ pageParam * 3 + i } ` ) ;
674+ } ) ;
675+
676+ const infiniteQuery = new InfiniteQueryMock ( {
677+ queryKey : [ 'test' ] ,
678+ queryFn : queryFnSpy ,
679+ enabled : false ,
680+ initialPageParam : 0 ,
681+ getNextPageParam : ( _ , allPages ) => {
682+ return allPages . length < 2 ? allPages . length : undefined ;
683+ } ,
684+ } ) ;
685+
686+ await infiniteQuery . start ( ) ;
687+
688+ await when ( ( ) => ! infiniteQuery . _rawResult . isLoading ) ;
689+
690+ expect ( infiniteQuery . result . isFetched ) . toBeTruthy ( ) ;
691+ expect ( queryFnSpy ) . toBeCalledTimes ( 1 ) ;
692+ expect ( infiniteQuery . data ?. pages ) . toHaveLength ( 1 ) ;
693+
694+ infiniteQuery . destroy ( ) ;
695+ } ) ;
696+
697+ it ( 'should throw error when throwOnError is true' , async ( ) => {
698+ vi . useFakeTimers ( ) ;
699+
700+ const infiniteQuery = new InfiniteQueryMock ( {
701+ queryKey : [ 'test-error' ] ,
702+ queryFn : async ( ) => {
703+ throw new Error ( 'InfiniteQueryError' ) ;
704+ } ,
705+ enabled : false ,
706+ throwOnError : true ,
707+ initialPageParam : 0 ,
708+ getNextPageParam : ( ) => undefined ,
709+ } ) ;
710+
711+ let error : Error | undefined ;
712+
713+ const promise = infiniteQuery . start ( ) . catch ( ( error_ ) => {
714+ error = error_ ;
715+ } ) ;
716+
717+ await vi . runAllTimersAsync ( ) ;
718+ await promise ;
719+
720+ expect ( error ?. message ) . toBe ( 'InfiniteQueryError' ) ;
721+
722+ infiniteQuery . destroy ( ) ;
723+ vi . useRealTimers ( ) ;
724+ } ) ;
725+ } ) ;
669726} ) ;
0 commit comments