diff --git a/packages/preact-query/src/__tests__/useQuery.test.tsx b/packages/preact-query/src/__tests__/useQuery.test.tsx index 554a4787fad..3a7e49bc3a9 100644 --- a/packages/preact-query/src/__tests__/useQuery.test.tsx +++ b/packages/preact-query/src/__tests__/useQuery.test.tsx @@ -3263,6 +3263,31 @@ describe('useQuery', () => { expect(states[1]).toMatchObject({ data: { count: 1 } }) }) + it('should keep initialData visible alongside the error when a refetch fails', async () => { + const key = queryKey() + const states: Array> = [] + + function Page() { + const state = useQuery({ + queryKey: key, + queryFn: () => + sleep(10).then(() => Promise.reject(new Error('Some error'))), + initialData: 'initial', + retry: false, + }) + states.push(state) + return null + } + + renderWithClient(queryClient, ) + + await vi.advanceTimersByTimeAsync(11) + + expect(states.length).toBe(2) + expect(states[0]).toMatchObject({ data: 'initial', isError: false }) + expect(states[1]).toMatchObject({ data: 'initial', isError: true }) + }) + it('should retry specified number of times', async () => { const key = queryKey() diff --git a/packages/react-query/src/__tests__/useQuery.test.tsx b/packages/react-query/src/__tests__/useQuery.test.tsx index e59c2099ce6..1c706a8ab21 100644 --- a/packages/react-query/src/__tests__/useQuery.test.tsx +++ b/packages/react-query/src/__tests__/useQuery.test.tsx @@ -3251,6 +3251,31 @@ describe('useQuery', () => { expect(states[1]).toMatchObject({ data: { count: 1 } }) }) + it('should keep initialData visible alongside the error when a refetch fails', async () => { + const key = queryKey() + const states: Array> = [] + + function Page() { + const state = useQuery({ + queryKey: key, + queryFn: () => + sleep(10).then(() => Promise.reject(new Error('Some error'))), + initialData: 'initial', + retry: false, + }) + states.push(state) + return null + } + + renderWithClient(queryClient, ) + + await vi.advanceTimersByTimeAsync(11) + + expect(states.length).toBe(2) + expect(states[0]).toMatchObject({ data: 'initial', isError: false }) + expect(states[1]).toMatchObject({ data: 'initial', isError: true }) + }) + it('should retry specified number of times', async () => { const key = queryKey()