Skip to content

Commit f938236

Browse files
committed
test: add infinite query start method tests
1 parent 7031be3 commit f938236

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

src/infinite-query.test.ts

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)