From d2a95676eb66e6a368c8f43f044b9866bbd45270 Mon Sep 17 00:00:00 2001 From: Tim MacDonald Date: Thu, 8 Jun 2023 11:30:42 +1000 Subject: [PATCH] fix array filtering of files --- packages/core/src/validator.ts | 2 +- packages/core/tests/validator.test.js | 65 +++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/packages/core/src/validator.ts b/packages/core/src/validator.ts index bdd6019..f44eba9 100644 --- a/packages/core/src/validator.ts +++ b/packages/core/src/validator.ts @@ -321,7 +321,7 @@ const forgetFiles = (data: Record): Record => } if (Array.isArray(value)) { - newData[name] = value.filter(isFile) + newData[name] = value.filter((value) => !isFile(value)) return } diff --git a/packages/core/tests/validator.test.js b/packages/core/tests/validator.test.js index 582b0fe..13ae47d 100644 --- a/packages/core/tests/validator.test.js +++ b/packages/core/tests/validator.test.js @@ -224,3 +224,68 @@ it('is valid after field has changed and successful validation has triggered', a expect(requestMade).toBe(true) expect(validator.valid()).toEqual(['name']) }) + +it('filters out files', () => { + let config + axios.request.mockImplementationOnce((c) => { + config = c + return Promise.resolve({ headers: { precognition: 'true' } }) + }) + const validator = createValidator((client) => client.post('/foo', { + name: 'Tim', + email: null, + fruits: [ + 'apple', + 'banana', + new Blob([], { type: 'image/png' }), + ], + avatar: new Blob([], { type: 'image/png' }), + nested: { + name: 'Tim', + email: null, + fruits: [ + 'apple', + 'banana', + new Blob([], { type: 'image/png' }), + ], + avatar: new Blob([], { type: 'image/png' }), + nested: { + name: 'Tim', + email: null, + fruits: [ + 'apple', + 'banana', + new Blob([], { type: 'image/png' }), + ], + avatar: new Blob([], { type: 'image/png' }), + } + } + })) + + validator.validate('text', 'Tim') + + expect(config.data).toEqual({ + name: 'Tim', + email: null, + fruits: [ + 'apple', + 'banana', + ], + nested: { + name: 'Tim', + email: null, + fruits: [ + 'apple', + 'banana', + ], + nested: { + name: 'Tim', + email: null, + fruits: [ + 'apple', + 'banana', + ], + } + } + }) +})