From 8e6a829d9d232f9469e50b30d75b6c18ca5c1bf1 Mon Sep 17 00:00:00 2001 From: Johan Bergman Date: Thu, 28 Nov 2024 20:53:29 +0100 Subject: [PATCH] Fix getQueriesToUpdate when mutation has fewer array items than cached data --- packages/normy/src/create-normalizer.spec.ts | 23 ++++++++++++++++++++ packages/normy/src/create-normalizer.ts | 4 ++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/packages/normy/src/create-normalizer.spec.ts b/packages/normy/src/create-normalizer.spec.ts index 140f1d8..5a4b39e 100644 --- a/packages/normy/src/create-normalizer.spec.ts +++ b/packages/normy/src/create-normalizer.spec.ts @@ -683,6 +683,29 @@ describe('createNormalizer', () => { ]); }); + it('returns query if mutation array and query array are of different length', () => { + const normalizer = createNormalizer(); + normalizer.setQuery('query', { + id: '1', + list: [1, 2], + }); + + expect( + normalizer.getQueriesToUpdate({ + id: '1', + list: [1], + }), + ).toEqual([ + { + queryKey: 'query', + data: { + id: '1', + list: [1], + }, + }, + ]); + }); + it('works with equal date objects', () => { const normalizer = createNormalizer(); diff --git a/packages/normy/src/create-normalizer.ts b/packages/normy/src/create-normalizer.ts index 1b788ed..fd6491f 100644 --- a/packages/normy/src/create-normalizer.ts +++ b/packages/normy/src/create-normalizer.ts @@ -20,8 +20,8 @@ const isMutationObjectDifferent = ( normalizedData: Data, ): boolean => { if (Array.isArray(mutationData) && Array.isArray(normalizedData)) { - if (mutationData.length === 0) { - return normalizedData.length !== 0; + if (mutationData.length !== normalizedData.length) { + return true; } return mutationData.some((v, i) =>