From c53ea8e2bc62316b17084367e28c7000a057aad9 Mon Sep 17 00:00:00 2001 From: Karolina Rusek-Bieniek Date: Mon, 23 Sep 2024 11:39:19 +0200 Subject: [PATCH] feat(metadata-sidebar): test fix and pr comment --- src/api/Metadata.js | 2 +- .../content-sidebar/MetadataSidebarRedesign.tsx | 9 ++++++--- .../__tests__/useSidebarMetadataFetcher.test.tsx | 14 +++++++------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/api/Metadata.js b/src/api/Metadata.js index 8c65261aee..c368d2ba45 100644 --- a/src/api/Metadata.js +++ b/src/api/Metadata.js @@ -769,7 +769,7 @@ class Metadata extends File { // API does not accept string for float type if (obj.type === 'float' && value) value = parseFloat(obj.value); // API does not accept empty string for enum type - if (obj.type === 'enum' && value.length === 0) value = undefined; + if (obj.type === 'enum' && value && value.length === 0) value = undefined; return [obj.key, value]; }), ) diff --git a/src/elements/content-sidebar/MetadataSidebarRedesign.tsx b/src/elements/content-sidebar/MetadataSidebarRedesign.tsx index d7dde9b34b..c4c8bd7ea3 100644 --- a/src/elements/content-sidebar/MetadataSidebarRedesign.tsx +++ b/src/elements/content-sidebar/MetadataSidebarRedesign.tsx @@ -120,12 +120,15 @@ function MetadataSidebarRedesign({ handleDeleteMetadataInstance(metadataInstance); setEditingTemplate(null); }; - const checkIfTemplateInstanceExists = (id: string): MetadataTemplateInstance => { - return templateInstances.find(templateInstance => templateInstance.id === id); + + const isExistingMetadataInstance = (): boolean => { + return ( + editingTemplate && !!templateInstances.find(templateInstance => templateInstance.id === editingTemplate.id) + ); }; const handleSubmit = (values: FormValues) => { - checkIfTemplateInstanceExists(editingTemplate?.id) + isExistingMetadataInstance() ? updateMetadataInstance() : createMetadataInstance(values.metadata as MetadataTemplateInstance, () => setEditingTemplate(null)); }; diff --git a/src/elements/content-sidebar/__tests__/useSidebarMetadataFetcher.test.tsx b/src/elements/content-sidebar/__tests__/useSidebarMetadataFetcher.test.tsx index 78519ffe01..259c3c8591 100644 --- a/src/elements/content-sidebar/__tests__/useSidebarMetadataFetcher.test.tsx +++ b/src/elements/content-sidebar/__tests__/useSidebarMetadataFetcher.test.tsx @@ -79,9 +79,9 @@ const mockAPI = { errorCallback(error); } }), - createMetadata: jest.fn((_file, template, successCallback, errorCallback, isMetadataRedesign) => { + createMetadata: jest.fn((_file, template, successCallback, errorCallback) => { try { - successCallback(template); + successCallback(); } catch (error) { errorCallback(error); } @@ -207,17 +207,17 @@ describe('useSidebarMetadataFetcher', () => { successCallback({ templateInstances: mockTemplateInstances, templates: mockTemplates }); }); mockAPI.createMetadata.mockImplementation((file, template, successCallback) => { - successCallback(newTemplateInstance); + successCallback(); }); + const successCallback = jest.fn(); + const { result } = setupHook(); expect(result.current.templateInstances).toEqual(mockTemplateInstances); - await waitFor(() => result.current.createMetadataInstance(newTemplateInstance, jest.fn())); + await waitFor(() => result.current.createMetadataInstance(newTemplateInstance, successCallback)); - expect(result.current.templates).toEqual(mockTemplates); - expect(result.current.templateInstances).toEqual([...mockTemplateInstances, newTemplateInstance]); - expect(result.current.errorMessage).toBeNull(); + expect(successCallback).toHaveBeenCalled(); }); test('should handle metadata instance creation error', async () => {