/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import React from "react"; import "@testing-library/jest-dom/extend-expect"; import { render } from "@testing-library/react"; import ISMTemplate from "./ISMTemplate"; import { fireEvent } from "@testing-library/dom"; import userEvent from "@testing-library/user-event/dist"; describe("<ISMTemplate /> spec", () => { it("renders the component", () => { const { container } = render( <ISMTemplate template={{ index_patterns: ["*"], priority: 5 }} onUpdateTemplate={() => {}} onRemoveTemplate={() => {}} isFirst={true} /> ); expect(container.firstChild).toMatchSnapshot(); }); it("calls on remove template when clicking remove button", () => { const onRemoveTemplate = jest.fn(); const { getByTestId } = render( <ISMTemplate template={{ index_patterns: ["*"], priority: 5 }} onUpdateTemplate={() => {}} onRemoveTemplate={onRemoveTemplate} isFirst={true} /> ); fireEvent.click(getByTestId("ism-template-remove-button")); expect(onRemoveTemplate).toHaveBeenCalled(); }); it("calls on update template when typing in priority input", async () => { const template = { index_patterns: ["*"], priority: 7 }; const onUpdateTemplate = jest.fn(); const { getByTestId } = render( <ISMTemplate template={template} onUpdateTemplate={onUpdateTemplate} onRemoveTemplate={() => {}} isFirst={true} /> ); fireEvent.focus(getByTestId("ism-template-priority-input")); userEvent.type(getByTestId("ism-template-priority-input"), "2"); fireEvent.blur(getByTestId("ism-template-priority-input")); expect(onUpdateTemplate).toHaveBeenCalled(); expect(onUpdateTemplate).toHaveBeenCalledWith({ ...template, priority: 72 }); // already contains 7, just added 2 }); });