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,