From f3588c565de43148a8810bc923893bd133143377 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Tue, 3 Feb 2026 23:27:52 +0900 Subject: [PATCH] test(react-query/suspense): add test cases for 'static' staleTime with number and function --- .../src/__tests__/suspense.test.tsx | 55 ++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/packages/react-query/src/__tests__/suspense.test.tsx b/packages/react-query/src/__tests__/suspense.test.tsx index 409cdfcbce..41acbb4098 100644 --- a/packages/react-query/src/__tests__/suspense.test.tsx +++ b/packages/react-query/src/__tests__/suspense.test.tsx @@ -3,6 +3,7 @@ import { act, render } from '@testing-library/react' import { Suspense } from 'react' import { queryKey, sleep } from '@tanstack/query-test-utils' import { QueryClient, QueryClientProvider, useSuspenseQuery } from '..' +import type { StaleTime } from '@tanstack/query-core' import type { QueryKey } from '..' function renderWithSuspense(client: QueryClient, ui: React.ReactNode) { @@ -16,7 +17,7 @@ function renderWithSuspense(client: QueryClient, ui: React.ReactNode) { function createTestQuery(options: { fetchCount: { count: number } queryKey: QueryKey - staleTime?: number | (() => number) + staleTime?: StaleTime | (() => StaleTime) }) { return function TestComponent() { const { data } = useSuspenseQuery({ @@ -156,6 +157,58 @@ describe('Suspense Timer Tests', () => { expect(fetchCount.count).toBe(1) }) + it('should preserve staleTime when value is static', async () => { + const TestComponent = createTestQuery({ + fetchCount, + queryKey: queryKey(), + staleTime: 'static', + }) + + const rendered = renderWithSuspense(queryClient, ) + + expect(rendered.getByText('loading')).toBeInTheDocument() + await act(() => vi.advanceTimersByTimeAsync(10)) + expect(rendered.getByText('data: data')).toBeInTheDocument() + + rendered.rerender( + + + + + , + ) + + await act(() => vi.advanceTimersByTimeAsync(2000)) + + expect(fetchCount.count).toBe(1) + }) + + it('should preserve staleTime when function returns static', async () => { + const TestComponent = createTestQuery({ + fetchCount, + queryKey: queryKey(), + staleTime: () => 'static', + }) + + const rendered = renderWithSuspense(queryClient, ) + + expect(rendered.getByText('loading')).toBeInTheDocument() + await act(() => vi.advanceTimersByTimeAsync(10)) + expect(rendered.getByText('data: data')).toBeInTheDocument() + + rendered.rerender( + + + + + , + ) + + await act(() => vi.advanceTimersByTimeAsync(2000)) + + expect(fetchCount.count).toBe(1) + }) + it('should respect staleTime when function returns value greater than 1000ms', async () => { const TestComponent = createTestQuery({ fetchCount,