From fb9d4f6138645a4812d7590a39476f880d181b40 Mon Sep 17 00:00:00 2001 From: Bohdan Yefimenko Date: Mon, 2 Sep 2024 15:27:36 +0300 Subject: [PATCH] fix(query-core): remove error thrown inside `replaceData` (#8004) --- .../query-core/src/__tests__/query.test.tsx | 32 ++++++++++++++++--- packages/query-core/src/utils.ts | 2 -- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/packages/query-core/src/__tests__/query.test.tsx b/packages/query-core/src/__tests__/query.test.tsx index dc87e16fac..0b3d4889d6 100644 --- a/packages/query-core/src/__tests__/query.test.tsx +++ b/packages/query-core/src/__tests__/query.test.tsx @@ -966,7 +966,7 @@ describe('query', () => { expect(spy).toHaveBeenCalledWith('1 - 2') }) - it('should have an error status when queryFn data is not serializable', async () => { + it('should have an error log when queryFn data is not serializable', async () => { const consoleMock = vi.spyOn(console, 'error') consoleMock.mockImplementation(() => undefined) @@ -1000,8 +1000,6 @@ describe('query', () => { await queryClient.prefetchQuery({ queryKey: key, queryFn }) - const query = queryCache.find({ queryKey: key })! - expect(queryFn).toHaveBeenCalledTimes(1) expect(consoleMock).toHaveBeenCalledWith( @@ -1010,8 +1008,32 @@ describe('query', () => { ), ) - expect(query.state.status).toBe('error') - consoleMock.mockRestore() }) + + it('should have an error status when setData has any error inside', async () => { + const key = queryKey() + + const queryFn = vi.fn() + + queryFn.mockImplementation(async () => { + await sleep(10) + + return 'data' + }) + + await queryClient.prefetchQuery({ + queryKey: key, + queryFn, + structuralSharing: () => { + throw Error('Any error') + }, + }) + + const query = queryCache.find({ queryKey: key })! + + expect(queryFn).toHaveBeenCalledTimes(1) + + expect(query.state.status).toBe('error') + }) }) diff --git a/packages/query-core/src/utils.ts b/packages/query-core/src/utils.ts index e23fca40e4..a8f91a633d 100644 --- a/packages/query-core/src/utils.ts +++ b/packages/query-core/src/utils.ts @@ -362,8 +362,6 @@ export function replaceData< console.error( `StructuralSharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`, ) - - throw new Error('Data is not serializable') } }