Skip to content

Commit 732089e

Browse files
test(query-core): add test case for infiniteQueryBehavior (#9101)
Co-authored-by: Jonghyeon Ko <[email protected]>
1 parent 6f8d57b commit 732089e

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

packages/query-core/src/__tests__/infiniteQueryBehavior.test.tsx

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,4 +441,63 @@ describe('InfiniteQueryBehavior', () => {
441441

442442
unsubscribe()
443443
})
444+
445+
test('InfiniteQueryBehavior should not fetch next page when getNextPageParam returns null', async () => {
446+
const key = queryKey()
447+
448+
const observer = new InfiniteQueryObserver(queryClient, {
449+
queryKey: key,
450+
queryFn: ({ pageParam }) => sleep(0).then(() => pageParam),
451+
getNextPageParam: (lastPage) => (lastPage === 1 ? null : lastPage + 1),
452+
initialPageParam: 1,
453+
})
454+
455+
let observerResult:
456+
| InfiniteQueryObserverResult<InfiniteData<number, unknown>, Error>
457+
| undefined
458+
459+
const unsubscribe = observer.subscribe((result) => {
460+
observerResult = result
461+
})
462+
463+
await vi.waitFor(() =>
464+
expect(observerResult).toMatchObject({
465+
isFetching: false,
466+
data: { pages: [1], pageParams: [1] },
467+
}),
468+
)
469+
470+
await observer.fetchNextPage()
471+
472+
expect(observerResult).toMatchObject({
473+
isFetching: false,
474+
data: { pages: [1], pageParams: [1] },
475+
})
476+
477+
unsubscribe()
478+
})
479+
480+
test('InfiniteQueryBehavior should use persister when provided', async () => {
481+
const key = queryKey()
482+
483+
const persisterSpy = vi.fn().mockImplementation(async (fn) => {
484+
return await fn()
485+
})
486+
487+
const observer = new InfiniteQueryObserver(queryClient, {
488+
queryKey: key,
489+
queryFn: ({ pageParam }) => sleep(0).then(() => pageParam),
490+
getNextPageParam: (lastPage) => lastPage + 1,
491+
initialPageParam: 1,
492+
persister: persisterSpy,
493+
})
494+
495+
const unsubscribe = observer.subscribe(() => {})
496+
497+
await vi.waitFor(() => {
498+
expect(persisterSpy).toHaveBeenCalledTimes(1)
499+
})
500+
501+
unsubscribe()
502+
})
444503
})

0 commit comments

Comments
 (0)