/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import React from "react"; import "@testing-library/jest-dom/extend-expect"; import { render, waitFor } from "@testing-library/react"; import AssociatedTemplatesModal from "./AssociatedTemplatesModal"; import userEvent from "@testing-library/user-event"; import { browserServicesMock, coreServicesMock } from "../../../../../test/mocks"; import { ServicesContext } from "../../../../services"; import { CoreServicesContext } from "../../../../components/core_services"; describe(" spec", () => { it("renders the component", async () => { const templateName = "test_template"; const componentTemplateName = "test_component_template"; const unlinkHandlerMock = jest.fn(); let time = 0; browserServicesMock.commonService.apiCaller = jest.fn( async (payload): Promise => { if (payload.data?.path?.startsWith("/_component_template/")) { return { ok: true, response: {}, }; } else if (payload.data?.path?.startsWith("/_index_template")) { if (payload.data?.method === "POST") { time++; return { ok: time !== 1, error: "error", }; } return { ok: true, response: { index_templates: [ { name: templateName, index_template: { composed_of: [componentTemplateName], }, }, ], }, }; } return { ok: true, response: {} }; } ); const { findByText, getByTestId, queryByText } = render( (
setVisible(true)}> 123
)} onUnlink={unlinkHandlerMock} />
); await findByText("123"); await userEvent.click(getByTestId("test")); await findByText("Associated index templates"); await findByText(templateName); await findByText(/This table contains 1 rows out of 1 rows;/); expect(document.body.children).toMatchSnapshot(); await userEvent.click(document.querySelector(`[aria-label='Unlink from ${templateName}?']`) as Element); await findByText(`Unlink from ${templateName}?`); await findByText( `The component ${componentTemplateName} will be removed from the template ${templateName}. This will affect any new indexes created with the template.` ); await userEvent.click(getByTestId(`Unlink from ${templateName}?-confirm`)); await waitFor(() => { expect(browserServicesMock.commonService.apiCaller).toBeCalledTimes(3); expect(coreServicesMock.notifications.toasts.addDanger).toBeCalledWith("error"); expect(unlinkHandlerMock).toBeCalledTimes(0); }); await userEvent.click(getByTestId(`Unlink from ${templateName}?-confirm`)); await waitFor(() => { expect(browserServicesMock.commonService.apiCaller).toBeCalledTimes(6); expect(coreServicesMock.notifications.toasts.addSuccess).toBeCalledWith( `${componentTemplateName} has been successfully unlinked from ${templateName}.` ); expect(unlinkHandlerMock).toBeCalledWith(templateName); }); await userEvent.click(getByTestId("euiFlyoutCloseButton")); await waitFor(() => { expect(queryByText("Associated index templates")).toBeNull(); }); }); });