From 5c9f8b9315733593d12483561813f4eaa121b81b Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Tue, 3 Mar 2026 01:08:21 +0900 Subject: [PATCH 1/2] test(react-query/useSuspenseInfiniteQuery): add test for basic suspend and resolve states --- .../useSuspenseInfiniteQuery.test.tsx | 69 ++++++++++++++++++- 1 file changed, 67 insertions(+), 2 deletions(-) diff --git a/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.test.tsx b/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.test.tsx index 277bdc0b7e5..1a9395d793d 100644 --- a/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.test.tsx +++ b/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.test.tsx @@ -1,6 +1,7 @@ -import { describe, expect, it, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { act, fireEvent } from '@testing-library/react' import * as React from 'react' -import { queryKey } from '@tanstack/query-test-utils' +import { queryKey, sleep } from '@tanstack/query-test-utils' import { QueryCache, QueryClient, @@ -8,11 +9,75 @@ import { useSuspenseInfiniteQuery, } from '..' import { renderWithClient } from './utils' +import type { InfiniteData, UseSuspenseInfiniteQueryResult } from '..' describe('useSuspenseInfiniteQuery', () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + const queryCache = new QueryCache() const queryClient = new QueryClient({ queryCache }) + it('should return the correct states for a successful infinite query', async () => { + const key = queryKey() + const states: Array< + UseSuspenseInfiniteQueryResult> + > = [] + + function Page() { + const [multiplier, setMultiplier] = React.useState(1) + const state = useSuspenseInfiniteQuery({ + queryKey: [`${key}_${multiplier}`], + queryFn: ({ pageParam }) => + sleep(10).then(() => pageParam * multiplier), + initialPageParam: 1, + getNextPageParam: (lastPage) => lastPage + 1, + }) + + states.push(state) + + return ( +
+ + data: {state.data?.pages.join(',')} +
+ ) + } + + const rendered = renderWithClient( + queryClient, + + + , + ) + + expect(rendered.getByText('loading')).toBeInTheDocument() + await act(() => vi.advanceTimersByTimeAsync(10)) + expect(rendered.getByText('data: 1')).toBeInTheDocument() + + expect(states.length).toBe(1) + expect(states[0]).toMatchObject({ + data: { pages: [1], pageParams: [1] }, + status: 'success', + }) + + fireEvent.click(rendered.getByText('next')) + expect(rendered.getByText('loading')).toBeInTheDocument() + await act(() => vi.advanceTimersByTimeAsync(10)) + expect(rendered.getByText('data: 2')).toBeInTheDocument() + + expect(states.length).toBe(2) + expect(states[1]).toMatchObject({ + data: { pages: [2], pageParams: [1] }, + status: 'success', + }) + }) + it('should log an error when skipToken is passed as queryFn', () => { const consoleErrorSpy = vi .spyOn(console, 'error') From b3938b9d8d0f8008e9bebf18a5416aa6d5f94557 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 16:09:59 +0000 Subject: [PATCH 2/2] ci: apply automated fixes --- .../src/__tests__/useSuspenseInfiniteQuery.test.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.test.tsx b/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.test.tsx index 1a9395d793d..df3ae92bf32 100644 --- a/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.test.tsx +++ b/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.test.tsx @@ -25,9 +25,8 @@ describe('useSuspenseInfiniteQuery', () => { it('should return the correct states for a successful infinite query', async () => { const key = queryKey() - const states: Array< - UseSuspenseInfiniteQueryResult> - > = [] + const states: Array>> = + [] function Page() { const [multiplier, setMultiplier] = React.useState(1)