From f0f4305c4f011ebdecfd099f95638a96d47bca23 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Sat, 18 Apr 2026 09:12:34 +0900 Subject: [PATCH] test(query-core/queriesObserver): add test for returning cached combined result when nothing has changed --- .../src/__tests__/queriesObserver.test.tsx | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/packages/query-core/src/__tests__/queriesObserver.test.tsx b/packages/query-core/src/__tests__/queriesObserver.test.tsx index aa71f92e6ba..686c7868c4e 100644 --- a/packages/query-core/src/__tests__/queriesObserver.test.tsx +++ b/packages/query-core/src/__tests__/queriesObserver.test.tsx @@ -633,6 +633,32 @@ describe('queriesObserver', () => { trackResultSpy.mockRestore() }) + test('should return cached combined result when nothing has changed', () => { + const combine = vi.fn((results: Array) => ({ + count: results.length, + })) + + const key = queryKey() + const queryFn = vi.fn().mockReturnValue(1) + + const queries = [{ queryKey: key, queryFn }] + + const observer = new QueriesObserver<{ count: number }>( + queryClient, + queries, + { combine }, + ) + + const [raw1, getCombined1] = observer.getOptimisticResult(queries, combine) + const combined1 = getCombined1(raw1) + + const [raw2, getCombined2] = observer.getOptimisticResult(queries, combine) + const combined2 = getCombined2(raw2) + + // Same combine, same queries → cached result returned + expect(combined1).toBe(combined2) + }) + test('should track properties on all observers when trackResult is called', () => { const key1 = queryKey() const key2 = queryKey()