From 92d9e2c01ac4341d09542e874dc0a363db04369f Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Fri, 5 Jun 2026 22:46:46 +0900 Subject: [PATCH 1/4] test(query-core/onlineManager): add test for online status updates from window events (#10886) --- .../src/__tests__/onlineManager.test.tsx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/query-core/src/__tests__/onlineManager.test.tsx b/packages/query-core/src/__tests__/onlineManager.test.tsx index 9d4ab713b02..d9219e01970 100644 --- a/packages/query-core/src/__tests__/onlineManager.test.tsx +++ b/packages/query-core/src/__tests__/onlineManager.test.tsx @@ -157,6 +157,20 @@ describe('onlineManager', () => { unsubscribe2() }) + it('should update online status from window online and offline events', () => { + const unsubscribe = onlineManager.subscribe(() => undefined) + + expect(onlineManager.isOnline()).toBe(true) + + window.dispatchEvent(new Event('offline')) + expect(onlineManager.isOnline()).toBe(false) + + window.dispatchEvent(new Event('online')) + expect(onlineManager.isOnline()).toBe(true) + + unsubscribe() + }) + it('should call listeners when setOnline is called', () => { const listener = vi.fn() From bd0a264e5e4d89badeede873531b908df9248c57 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Fri, 5 Jun 2026 23:03:14 +0900 Subject: [PATCH 2/4] test(query-core/queryObserver): add test for promise not rejecting when 'experimental_prefetchInRender' is enabled (#10887) --- .../src/__tests__/queryObserver.test.tsx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/packages/query-core/src/__tests__/queryObserver.test.tsx b/packages/query-core/src/__tests__/queryObserver.test.tsx index c814314da13..00f37048caf 100644 --- a/packages/query-core/src/__tests__/queryObserver.test.tsx +++ b/packages/query-core/src/__tests__/queryObserver.test.tsx @@ -1462,6 +1462,24 @@ describe('queryObserver', () => { queryClient2.clear() }) + it('should not reject promise when experimental_prefetchInRender is enabled', async () => { + const key = queryKey() + const observer = new QueryObserver(queryClient, { + queryKey: key, + queryFn: () => sleep(10).then(() => 'data'), + }) + + const unsubscribe = observer.subscribe(() => undefined) + const tracked = observer.trackResult(observer.getCurrentResult()) + const promise = tracked.promise + + await vi.advanceTimersByTimeAsync(10) + + await expect(promise).resolves.toBe('data') + + unsubscribe() + }) + it('should not refetchOnMount when set to "always" when staleTime is Static', async () => { const key = queryKey() const queryFn = vi.fn(() => 'data') From b63da8a294a3b5580aca2e5cf7e1b5f717970845 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Sat, 6 Jun 2026 00:21:24 +0900 Subject: [PATCH 3/4] test(query-core/queryCache): add test for 'remove' only deleting the instance currently stored under its 'queryHash' (#10888) --- .../query-core/src/__tests__/queryCache.test.tsx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/query-core/src/__tests__/queryCache.test.tsx b/packages/query-core/src/__tests__/queryCache.test.tsx index 1238bcf44a9..c404c1f942b 100644 --- a/packages/query-core/src/__tests__/queryCache.test.tsx +++ b/packages/query-core/src/__tests__/queryCache.test.tsx @@ -380,6 +380,22 @@ describe('queryCache', () => { }) }) + describe('QueryCache.remove', () => { + it('should only delete the instance currently stored under its queryHash', () => { + const key = queryKey() + + const staleQuery = queryCache.build(queryClient, { queryKey: key }) + queryCache.remove(staleQuery) + + const currentQuery = queryCache.build(queryClient, { queryKey: key }) + expect(currentQuery).not.toBe(staleQuery) + + queryCache.remove(staleQuery) + + expect(queryCache.get(hashKey(key))).toBe(currentQuery) + }) + }) + describe('QueryCache.add', () => { it('should not try to add a query already added to the cache', async () => { const key = queryKey() From ba7fbc443ba5a528434b0695ccd70d12b67e2a87 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Sat, 6 Jun 2026 01:49:02 +0900 Subject: [PATCH 4/4] test(query-core/queryObserver): split 'shouldFetchOnWindowFocus' test by 'refetchOnWindowFocus' value (#10889) --- .../src/__tests__/queryObserver.test.tsx | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/query-core/src/__tests__/queryObserver.test.tsx b/packages/query-core/src/__tests__/queryObserver.test.tsx index 00f37048caf..315c37b160b 100644 --- a/packages/query-core/src/__tests__/queryObserver.test.tsx +++ b/packages/query-core/src/__tests__/queryObserver.test.tsx @@ -1294,22 +1294,28 @@ describe('queryObserver', () => { unsubscribe() }) - it('shouldFetchOnWindowFocus should respect refetchOnWindowFocus option', () => { + it('shouldFetchOnWindowFocus should return true when refetchOnWindowFocus is true', () => { const key = queryKey() - const observer1 = new QueryObserver(queryClient, { + const observer = new QueryObserver(queryClient, { queryKey: key, queryFn: () => 'data', refetchOnWindowFocus: true, }) - expect(observer1.shouldFetchOnWindowFocus()).toBe(true) - const observer2 = new QueryObserver(queryClient, { + expect(observer.shouldFetchOnWindowFocus()).toBe(true) + }) + + it('shouldFetchOnWindowFocus should return false when refetchOnWindowFocus is false', () => { + const key = queryKey() + + const observer = new QueryObserver(queryClient, { queryKey: key, queryFn: () => 'data', refetchOnWindowFocus: false, }) - expect(observer2.shouldFetchOnWindowFocus()).toBe(false) + + expect(observer.shouldFetchOnWindowFocus()).toBe(false) }) it('fetchOptimistic should fetch and return optimistic result', async () => {