/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/
import { fireEvent, render } from '@testing-library/react';
import React from 'react';
import {
coreServicesMock,
notificationServiceMock,
} from '../../../../test/mocks/serviceMock';
import { CoreServicesContext } from '../../../components/coreServices';
import { DeleteRecipientGroupModal } from '../components/modals/DeleteRecipientGroupModal';
describe(' spec', () => {
it('returns if no recipient groups', () => {
const { container } = render(
{}}
refresh={() => {}}
services={notificationServiceMock}
/>
);
expect(container.firstChild).toBeNull();
});
it('renders the component', () => {
const recipientGroups = [jest.fn() as any];
const { container } = render(
{}}
refresh={() => {}}
services={notificationServiceMock}
/>
);
expect(container.firstChild).toMatchSnapshot();
});
it('renders multiple recipient groups', () => {
const recipientGroups = [jest.fn() as any, jest.fn() as any];
const { container } = render(
{}}
refresh={() => {}}
services={notificationServiceMock}
/>
);
expect(container.firstChild).toMatchSnapshot();
});
it('deletes recipient groups', () => {
const recipientGroups = [jest.fn() as any, jest.fn() as any];
const notificationServiceMock = jest.fn() as any;
notificationServiceMock.notificationService = {
deleteConfigs: async (ids: string[]) => Promise.resolve(),
};
const utils = render(
{}}
refresh={() => {}}
services={notificationServiceMock}
/>
);
const input = utils.getAllByPlaceholderText('delete')[0];
fireEvent.change(input, { target: { value: 'delete' } });
const deleteButton = utils.getByText('Delete');
fireEvent.click(deleteButton);
expect(utils.container.firstChild).toMatchSnapshot();
});
it('handles failures', () => {
const recipientGroups = [jest.fn() as any, jest.fn() as any];
const notificationServiceMock = jest.fn() as any;
notificationServiceMock.notificationService = {
deleteConfigs: async (ids: string[]) => Promise.reject(),
};
const utils = render(
{}}
refresh={() => {}}
services={notificationServiceMock}
/>
);
const input = utils.getAllByPlaceholderText('delete')[0];
fireEvent.change(input, { target: { value: 'delete' } });
const deleteButton = utils.getByText('Delete');
fireEvent.click(deleteButton);
expect(utils.container.firstChild).toMatchSnapshot();
});
});