/*
* 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 PolicyControls from "./PolicyControls";
describe(" spec", () => {
it("renders the component", async () => {
const { container } = render(
{}}
onPageClick={() => {}}
onRefresh={async () => {}}
/>
);
expect(container.firstChild).toMatchSnapshot();
});
it("calls onSearchChange when typing", async () => {
const onSearchChange = jest.fn();
const { getByPlaceholderText } = render(
{}}
onRefresh={async () => {}}
/>
);
userEvent.type(getByPlaceholderText("Search"), "four");
expect(onSearchChange).toHaveBeenCalledTimes(4);
});
it("shows/hides pagination", async () => {
const { queryByTestId, rerender } = render(
{}}
onPageClick={() => {}}
onRefresh={async () => {}}
/>
);
expect(queryByTestId("policyControlsPagination")).toBeNull();
rerender(
{}}
onPageClick={() => {}}
onRefresh={async () => {}}
/>
);
expect(queryByTestId("policyControlsPagination")).not.toBeNull();
});
it("calls onPageClick when clicking pagination", async () => {
const onPageClick = jest.fn();
const { getByTestId } = render(
{}}
onPageClick={onPageClick}
onRefresh={async () => {}}
/>
);
fireEvent.click(getByTestId("pagination-button-1"));
expect(onPageClick).toHaveBeenCalledTimes(1);
});
});