From 0d0a0a472929264bd0fefa300759e188c634bf43 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Fri, 6 Mar 2026 10:56:36 +0900 Subject: [PATCH 1/2] test(query-core/queriesObserver): add test for subscribing new observers when a query is added while subscribed --- .../src/__tests__/queriesObserver.test.tsx | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/packages/query-core/src/__tests__/queriesObserver.test.tsx b/packages/query-core/src/__tests__/queriesObserver.test.tsx index 2f7080ec60..efb403e265 100644 --- a/packages/query-core/src/__tests__/queriesObserver.test.tsx +++ b/packages/query-core/src/__tests__/queriesObserver.test.tsx @@ -546,4 +546,44 @@ describe('queriesObserver', () => { trackPropSpy.mockRestore() }) + + test('should subscribe to new observers when a query is added while subscribed', async () => { + const key1 = queryKey() + const key2 = queryKey() + const key3 = queryKey() + const queryFn1 = vi.fn().mockReturnValue(1) + const queryFn2 = vi.fn().mockReturnValue(2) + const queryFn3 = vi.fn(() => sleep(10).then(() => 3)) + const observer = new QueriesObserver(queryClient, [ + { queryKey: key1, queryFn: queryFn1 }, + { queryKey: key2, queryFn: queryFn2 }, + ]) + const results: Array> = [] + const unsubscribe = observer.subscribe((result) => { + results.push(result) + }) + + await vi.advanceTimersByTimeAsync(0) + + expect(results[results.length - 1]).toMatchObject([ + { status: 'success', data: 1 }, + { status: 'success', data: 2 }, + ]) + + observer.setQueries([ + { queryKey: key1, queryFn: queryFn1 }, + { queryKey: key2, queryFn: queryFn2 }, + { queryKey: key3, queryFn: queryFn3 }, + ]) + + await vi.advanceTimersByTimeAsync(10) + + unsubscribe() + + expect(results[results.length - 1]).toMatchObject([ + { status: 'success', data: 1 }, + { status: 'success', data: 2 }, + { status: 'success', data: 3 }, + ]) + }) }) From 1842ae3f08070a6346d2228772424103c33da3b4 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Fri, 6 Mar 2026 11:15:41 +0900 Subject: [PATCH 2/2] ci: re-trigger CI