/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import { fireEvent, render, waitFor } from '@testing-library/react'; import React from 'react'; import { coreServicesMock, mainStateMock, notificationServiceMock, } from '../../../../test/mocks/serviceMock'; import { CoreServicesContext } from '../../../components/coreServices'; import { MainContext } from '../../Main/Main'; import { CreateSESSenderModal } from '../components/modals/CreateSESSenderModal'; describe(' spec', () => { it('renders the component', () => { const utils = render( {}} onClose={() => {}} services={notificationServiceMock} /> ); expect(utils.container.firstChild).toMatchSnapshot(); }); it('validates input', async () => { const utils = render( {}} onClose={() => {}} services={notificationServiceMock} /> ); utils.getByText('Create').click(); expect(utils.container.firstChild).toMatchSnapshot(); }); it('creates senders', async () => { const notificationServiceMock = jest.fn() as any; const createConfig = jest.fn(async () => Promise.resolve()); notificationServiceMock.notificationService = { createConfig, }; const utils = render( {}} onClose={() => {}} services={notificationServiceMock} /> ); const nameInput = utils.getByTestId('create-ses-sender-form-name-input'); fireEvent.change(nameInput, { target: { value: 'test-name' } }); const emailInput = utils.getByTestId('create-ses-sender-form-email-input'); fireEvent.change(emailInput, { target: { value: 'test@email.com' } }); const roleArnInput = utils.getByTestId( 'create-ses-sender-form-role-arn-input' ); fireEvent.change(roleArnInput, { target: { value: 'test-role' } }); const awsRegionInput = utils.getByTestId( 'create-ses-sender-form-aws-region-input' ); fireEvent.change(awsRegionInput, { target: { value: 'us-east-2' } }); utils.getByText('Create').click(); await waitFor(() => { expect(createConfig).toBeCalled(); }); }); // TODO: Skipping test due to timeout it.skip('handles failures', async () => { const notificationServiceMock = jest.fn() as any; const createConfig = jest.fn(async () => Promise.reject()); notificationServiceMock.notificationService = { createConfig, }; const utils = render( {}} onClose={() => {}} services={notificationServiceMock} /> ); const nameInput = utils.getByTestId('create-ses-sender-form-name-input'); fireEvent.change(nameInput, { target: { value: 'test-name' } }); const emailInput = utils.getByTestId('create-ses-sender-form-email-input'); fireEvent.change(emailInput, { target: { value: 'test@email.com' } }); const roleArnInput = utils.getByTestId( 'create-ses-sender-form-role-arn-input' ); fireEvent.change(roleArnInput, { target: { value: 'test-role' } }); const awsRegionInput = utils.getByTestId( 'create-ses-sender-form-aws-region-input' ); fireEvent.change(awsRegionInput, { target: { value: 'us-east-2' } }); utils.getByText('Create').click(); await waitFor(() => { expect(createConfig).toBeCalled(); }); }); });