From cb27b719b769720964ed41ad4f39e5a1d9e3ce6a Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Thu, 4 Jun 2026 14:33:07 +0900 Subject: [PATCH] test(query-persist-client-core/persist): add test for ignoring mutation observer events in 'persistQueryClientSubscribe' --- .../src/__tests__/persist.test.ts | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/query-persist-client-core/src/__tests__/persist.test.ts b/packages/query-persist-client-core/src/__tests__/persist.test.ts index 9b5eb23d1cd..8d2c0f1b56b 100644 --- a/packages/query-persist-client-core/src/__tests__/persist.test.ts +++ b/packages/query-persist-client-core/src/__tests__/persist.test.ts @@ -1,5 +1,10 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import { QueriesObserver, QueryClient, dehydrate } from '@tanstack/query-core' +import { + MutationObserver, + QueriesObserver, + QueryClient, + dehydrate, +} from '@tanstack/query-core' import { persistQueryClient, persistQueryClientRestore, @@ -69,6 +74,28 @@ describe('persist', () => { unsubscribe() }) + + it('should not be triggered on mutation observer type events', () => { + const persister = createSpyPersister() + + const unsubscribe = persistQueryClientSubscribe({ + queryClient, + persister, + }) + + const observer = new MutationObserver(queryClient, { + mutationFn: () => Promise.resolve('data'), + }) + const unsubscribeObserver = observer.subscribe(vi.fn()) + observer.setOptions({ mutationKey: ['test'] }) + unsubscribeObserver() + + // Events fired by manipulating the mutation observer are not cache + // events, so they must not trigger a persist. + expect(persister.persistClient).not.toHaveBeenCalled() + + unsubscribe() + }) }) describe('persistQueryClientRestore', () => {