From 880d672084d83bc4596a0d87519ad40f1d890e5f Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Thu, 14 May 2026 01:19:08 +0900 Subject: [PATCH 1/2] test(query-devtools/Devtools): add test for restoring previous query options after 'Trigger Loading' is clicked --- .../src/__tests__/Devtools.test.tsx | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/packages/query-devtools/src/__tests__/Devtools.test.tsx b/packages/query-devtools/src/__tests__/Devtools.test.tsx index 7b6552c55b..36ef6b2c42 100644 --- a/packages/query-devtools/src/__tests__/Devtools.test.tsx +++ b/packages/query-devtools/src/__tests__/Devtools.test.tsx @@ -561,6 +561,39 @@ describe('Devtools', () => { 'pending', ) }) + + it('should restore the previous query options when "Restore Loading" is clicked after "Trigger Loading"', async () => { + const queryFn = vi.fn(() => Promise.resolve('original')) + queryClient.prefetchQuery({ + queryKey: ['action-restore-loading'], + queryFn, + }) + await vi.advanceTimersByTimeAsync(0) + expect(queryFn).toHaveBeenCalledTimes(1) + + const rendered = renderDevtools({ initialIsOpen: true }) + + fireEvent.click( + rendered.getByLabelText(/Query key \["action-restore-loading"\]/), + ) + + // First click puts the query into a pending state with `data: undefined` + // and stashes the original options in `fetchMeta.__previousQueryOptions`. + fireEvent.click(rendered.getByText('Trigger Loading')) + expect(queryClient.getQueryState(['action-restore-loading'])?.status).toBe( + 'pending', + ) + + // Second click runs `restoreQueryAfterLoadingOrError`, which cancels the + // never-resolving fetch and refetches with the stashed options. + fireEvent.click(rendered.getByText('Restore Loading')) + await vi.advanceTimersByTimeAsync(0) + + expect(queryFn).toHaveBeenCalledTimes(2) + expect(queryClient.getQueryData(['action-restore-loading'])).toBe( + 'original', + ) + }) }) describe('mutation details', () => { From 683ad58051d377989da95624a4a3b0373f551ea4 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 16:23:08 +0000 Subject: [PATCH 2/2] ci: apply automated fixes --- packages/query-devtools/src/__tests__/Devtools.test.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/query-devtools/src/__tests__/Devtools.test.tsx b/packages/query-devtools/src/__tests__/Devtools.test.tsx index 36ef6b2c42..f0b3d58e68 100644 --- a/packages/query-devtools/src/__tests__/Devtools.test.tsx +++ b/packages/query-devtools/src/__tests__/Devtools.test.tsx @@ -580,9 +580,9 @@ describe('Devtools', () => { // First click puts the query into a pending state with `data: undefined` // and stashes the original options in `fetchMeta.__previousQueryOptions`. fireEvent.click(rendered.getByText('Trigger Loading')) - expect(queryClient.getQueryState(['action-restore-loading'])?.status).toBe( - 'pending', - ) + expect( + queryClient.getQueryState(['action-restore-loading'])?.status, + ).toBe('pending') // Second click runs `restoreQueryAfterLoadingOrError`, which cancels the // never-resolving fetch and refetches with the stashed options.