diff --git a/packages/preact-query/src/__tests__/useQuery.test.tsx b/packages/preact-query/src/__tests__/useQuery.test.tsx index 91ae8c12f4..c7b5995b85 100644 --- a/packages/preact-query/src/__tests__/useQuery.test.tsx +++ b/packages/preact-query/src/__tests__/useQuery.test.tsx @@ -16,6 +16,7 @@ import { afterEach, beforeEach, describe, expect, it, test, vi } from 'vitest' import type { Mock } from 'vitest' import { + IsRestoringProvider, QueryCache, QueryClient, dehydrate, @@ -6782,4 +6783,47 @@ describe('useQuery', () => { consoleErrorMock.mockRestore() }) + + it('should not fetch for the duration of the restoring period when isRestoring is true', async () => { + const key = queryKey() + const queryFn = vi + .fn() + .mockImplementation(() => sleep(10).then(() => 'data')) + + function Page() { + const result = useQuery({ + queryKey: key, + queryFn, + }) + + return ( +
+
{result.status}
+
{result.fetchStatus}
+
{result.data ?? 'undefined'}
+
+ ) + } + + const rendered = renderWithClient( + queryClient, + + + , + ) + + await vi.advanceTimersByTimeAsync(0) + + expect(rendered.getByTestId('status')).toHaveTextContent('pending') + expect(rendered.getByTestId('fetchStatus')).toHaveTextContent('idle') + expect(rendered.getByTestId('data')).toHaveTextContent('undefined') + expect(queryFn).toHaveBeenCalledTimes(0) + + await vi.advanceTimersByTimeAsync(11) + + expect(rendered.getByTestId('status')).toHaveTextContent('pending') + expect(rendered.getByTestId('fetchStatus')).toHaveTextContent('idle') + expect(rendered.getByTestId('data')).toHaveTextContent('undefined') + expect(queryFn).toHaveBeenCalledTimes(0) + }) })