/* * 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 States from "./States"; import { DEFAULT_POLICY } from "../../utils/constants"; import { waitFor, screen, fireEvent } from "@testing-library/dom"; describe(" spec", () => { it("renders the component", () => { const { container } = render( {}} onClickEditState={() => {}} onClickDeleteState={() => {}} onChangeDefaultState={() => {}} /> ); expect(container.firstChild).toMatchSnapshot(); }); it("shows empty states message when none defined", async () => { render( {}} onClickEditState={() => {}} onClickDeleteState={() => {}} onChangeDefaultState={() => {}} /> ); await waitFor(() => screen.getByText("You can think of policies as state machines.", { exact: false })); expect( screen.queryByText("Your policy currently has no states defined. Add states to manage your index lifecycle.", { exact: false }) ).not.toBeNull(); }); it("opens flyout on clicking add state", async () => { const onOpenFlyout = jest.fn(); const { getByTestId } = render( {}} onClickDeleteState={() => {}} onChangeDefaultState={() => {}} /> ); await waitFor(() => screen.queryByText("Your policy currently has no states defined. Add states to manage your index lifecycle.", { exact: false }) ); fireEvent.click(getByTestId("states-add-state-button")); expect(onOpenFlyout).toHaveBeenCalled(); }); });