/*
* 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 NewPolicy from "./NewPolicy";
import { browserServicesMock } from "../../../../../test/mocks";
import { Radio } from "../../containers/ChangePolicy/ChangePolicy";
import coreServicesMock from "../../../../../test/mocks/coreServicesMock";
import { CoreServicesContext } from "../../../../components/core_services";
describe(" spec", () => {
it("renders the component", async () => {
browserServicesMock.indexService.searchPolicies = jest.fn().mockResolvedValue({ ok: true, response: { policies: [] } });
const { container } = render(
{}}
onChangeStateRadio={() => {}}
onStateSelectChange={() => {}}
selectedPoliciesError=""
/>
);
await waitFor(() => {});
expect(container.firstChild).toMatchSnapshot();
});
it("shows danger toaster when search fails", async () => {
browserServicesMock.indexService.searchPolicies = jest.fn().mockRejectedValue(new Error("this is an error"));
render(
{}}
onChangeStateRadio={() => {}}
onStateSelectChange={() => {}}
selectedPoliciesError=""
/>
);
await waitFor(() => {});
expect(coreServicesMock.notifications.toasts.addDanger).toHaveBeenCalledTimes(1);
expect(coreServicesMock.notifications.toasts.addDanger).toHaveBeenCalledWith("this is an error");
});
it("shows danger toaster when search gracefully fails", async () => {
browserServicesMock.indexService.searchPolicies = jest.fn().mockResolvedValue({ ok: false, error: "some error" });
render(
{}}
onChangeStateRadio={() => {}}
onStateSelectChange={() => {}}
selectedPoliciesError=""
/>
);
await waitFor(() => {});
expect(coreServicesMock.notifications.toasts.addDanger).toHaveBeenCalledTimes(1);
expect(coreServicesMock.notifications.toasts.addDanger).toHaveBeenCalledWith("some error");
});
it("shows danger toaster when search fails because of no config index", async () => {
browserServicesMock.indexService.searchPolicies = jest
.fn()
.mockResolvedValue({ ok: false, error: "[index_not_found_exception]and other stuff" });
render(
{}}
onChangeStateRadio={() => {}}
onStateSelectChange={() => {}}
selectedPoliciesError=""
/>
);
await waitFor(() => {});
expect(coreServicesMock.notifications.toasts.addDanger).toHaveBeenCalledTimes(1);
expect(coreServicesMock.notifications.toasts.addDanger).toHaveBeenCalledWith("You have not created a policy yet");
});
});