From f93228fc58fcb6af9e7e59fed8fc307b85e7d4c0 Mon Sep 17 00:00:00 2001 From: Gildas Garcia <1122076+djhi@users.noreply.github.com> Date: Wed, 26 Jun 2024 15:18:57 +0200 Subject: [PATCH] Fix useUpdate throws an error when record id is a valid falsy value such as zero --- .../src/dataProvider/useUpdate.spec.tsx | 32 +++++++++++++++++++ .../ra-core/src/dataProvider/useUpdate.ts | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/packages/ra-core/src/dataProvider/useUpdate.spec.tsx b/packages/ra-core/src/dataProvider/useUpdate.spec.tsx index adf20b4df85..648e2b83004 100644 --- a/packages/ra-core/src/dataProvider/useUpdate.spec.tsx +++ b/packages/ra-core/src/dataProvider/useUpdate.spec.tsx @@ -91,6 +91,38 @@ describe('useUpdate', () => { }); }); + it('accepts falsy value that are not null nor undefined as the record id', async () => { + const dataProvider = { + update: jest.fn(() => + Promise.resolve({ data: { id: 1 } } as any) + ), + } as any; + let localUpdate; + const Dummy = () => { + const [update] = useUpdate('foo', { + id: 0, + data: { bar: 'baz' }, + previousData: { id: 0, bar: 'bar' }, + }); + localUpdate = update; + return ; + }; + + render( + + + + ); + localUpdate(); + await waitFor(() => { + expect(dataProvider.update).toHaveBeenCalledWith('foo', { + id: 0, + data: { bar: 'baz' }, + previousData: { id: 0, bar: 'bar' }, + }); + }); + }); + it('replaces hook call time params by and callback time params', async () => { const dataProvider = { update: jest.fn(() => diff --git a/packages/ra-core/src/dataProvider/useUpdate.ts b/packages/ra-core/src/dataProvider/useUpdate.ts index 8fda6893108..cf5b79c34da 100644 --- a/packages/ra-core/src/dataProvider/useUpdate.ts +++ b/packages/ra-core/src/dataProvider/useUpdate.ts @@ -203,7 +203,7 @@ export const useUpdate = ( 'useUpdate mutation requires a non-empty resource' ); } - if (!callTimeId) { + if (callTimeId == null) { throw new Error('useUpdate mutation requires a non-empty id'); } if (!callTimeData) {