/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import React from "react"; import "@testing-library/jest-dom/extend-expect"; import { render, fireEvent, waitFor } from "@testing-library/react"; // @ts-ignore import userEvent from "@testing-library/user-event"; import ManagedIndexControls from "./ManagedIndexControls"; describe(" spec", () => { it("renders the component", async () => { const { container } = render( {}} onPageClick={() => {}} onRefresh={async () => {}} showDataStreams={false} getDataStreams={async () => []} toggleShowDataStreams={() => {}} /> ); expect(container.firstChild).toMatchSnapshot(); }); it("calls onSearchChange when typing", async () => { const onSearchChange = jest.fn(); const { getByPlaceholderText } = render( {}} onRefresh={async () => {}} showDataStreams={false} getDataStreams={async () => []} toggleShowDataStreams={() => {}} /> ); userEvent.type(getByPlaceholderText("Search index name"), "four"); expect(onSearchChange).toHaveBeenCalledTimes(4); }); it("calls toggleShowDataStreams when clicked", async () => { const toggleShowDataStreams = jest.fn(); const { getByTestId } = render( {}} onPageClick={() => {}} onRefresh={async () => {}} showDataStreams={false} getDataStreams={async () => []} toggleShowDataStreams={toggleShowDataStreams} /> ); fireEvent.click(getByTestId("toggleShowDataStreams")); expect(toggleShowDataStreams).toHaveBeenCalledTimes(1); }); it("renders data streams selection field", async () => { const getDataStreams = jest.fn(); const { container, getByText } = render( {}} onPageClick={() => {}} onRefresh={async () => {}} showDataStreams={true} getDataStreams={getDataStreams} toggleShowDataStreams={() => {}} /> ); expect(container.firstChild).toMatchSnapshot(); const dataStreamsSelection = getByText("Data streams"); expect(dataStreamsSelection).not.toBeNull(); fireEvent.click(dataStreamsSelection); await waitFor(() => expect(getDataStreams).toHaveBeenCalledTimes(1), { timeout: 10000 }); }); });