From e605f9f2f965639aed582db5a7f804264d875667 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Sat, 18 Apr 2026 09:00:29 +0900 Subject: [PATCH] test(query-core/queriesObserver): add test for skipping 'trackResult' when 'notifyOnChangeProps' is set --- .../src/__tests__/queriesObserver.test.tsx | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/packages/query-core/src/__tests__/queriesObserver.test.tsx b/packages/query-core/src/__tests__/queriesObserver.test.tsx index 901bdde4c57..aa71f92e6ba 100644 --- a/packages/query-core/src/__tests__/queriesObserver.test.tsx +++ b/packages/query-core/src/__tests__/queriesObserver.test.tsx @@ -609,6 +609,30 @@ describe('queriesObserver', () => { expect(combined.count).toBe(1) }) + test('should return observer result directly when notifyOnChangeProps is set', () => { + const key = queryKey() + const queryFn = vi.fn().mockReturnValue(1) + + const observer = new QueriesObserver(queryClient, [ + { queryKey: key, queryFn, notifyOnChangeProps: ['data'] }, + ]) + + const trackResultSpy = vi.spyOn(QueryObserver.prototype, 'trackResult') + + const [, , trackResult] = observer.getOptimisticResult( + [{ queryKey: key, queryFn, notifyOnChangeProps: ['data'] }], + undefined, + ) + + const trackedResults = trackResult() + + expect(trackedResults).toHaveLength(1) + // trackResult should NOT be called when notifyOnChangeProps is set + expect(trackResultSpy).not.toHaveBeenCalled() + + trackResultSpy.mockRestore() + }) + test('should track properties on all observers when trackResult is called', () => { const key1 = queryKey() const key2 = queryKey()