From e755267f2d6d60c92d2301dbae1021e3c323c7e3 Mon Sep 17 00:00:00 2001 From: Harsh Vador <58542468+harsh-vador@users.noreply.github.com> Date: Wed, 28 Feb 2024 11:45:28 +0530 Subject: [PATCH] test: unit test case of Add Data Product Modal (#15360) --- .../AddDataProductModal.test.tsx | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/Domain/AddDataProductModal/AddDataProductModal.test.tsx diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Domain/AddDataProductModal/AddDataProductModal.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Domain/AddDataProductModal/AddDataProductModal.test.tsx new file mode 100644 index 00000000000..332666d087b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/components/Domain/AddDataProductModal/AddDataProductModal.test.tsx @@ -0,0 +1,83 @@ +/* + * Copyright 2024 Collate. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { act, fireEvent, render, screen } from '@testing-library/react'; +import React from 'react'; +import AddDataProductModal from './AddDataProductModal.component'; + +const formData = { + description: 'test-description', + name: 'test-name', +}; + +const mockSubmit = jest.fn(); +const mockCancel = jest.fn(); +const mockSave = jest.fn(); + +const mockProps = { + open: true, + onSubmit: mockSubmit, + onCancel: mockCancel, +}; + +jest.mock('../AddDomainForm/AddDomainForm.component', () => { + return jest.fn().mockImplementation(({ onSubmit }) => ( +
+ AddDomainForm + +
+ )); +}); + +jest.mock('antd/lib/form/Form', () => ({ + useForm: () => [ + { + submit: mockSave, + }, + ], +})); + +describe('Test AddDataProductModal Component', () => { + it('Should Render Add Data Product Modal Component', async () => { + render(); + + expect(await screen.findByText('label.add-entity')).toBeInTheDocument(); + expect(await screen.findByText('AddDomainForm')).toBeInTheDocument(); + expect(await screen.findByText('label.cancel')).toBeInTheDocument(); + expect(await screen.findByText('label.save')).toBeInTheDocument(); + }); + + it('Should call onSubmit function', async () => { + render(); + + const submitButton = await screen.findByTestId('submit-button'); + await act(async () => { + fireEvent.click(submitButton); + }); + + expect(mockSubmit).toHaveBeenCalledWith(formData); + }); + + it('should call form.submit when save button is clicked', async () => { + await act(async () => { + render(); + }); + const button = await screen.findByTestId('save-data-product'); + await act(async () => { + fireEvent.click(button); + }); + + expect(mockSave).toHaveBeenCalled(); + }); +});