/* * 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 ChannelSelect, { ChannelSelectProps } from "./ChannelSelect"; import { browserServicesMock, coreServicesMock } from "../../../test/mocks"; import { ServicesContext } from "../../services"; import { CoreServicesContext } from "../../components/core_services"; import userEvent from "@testing-library/user-event"; function renderWithServiceAndCore(props: ChannelSelectProps) { return { ...render( ), }; } describe(" spec", () => { it("renders the component", async () => { browserServicesMock.notificationService.getChannels = jest.fn( async (): Promise => { return { ok: true, response: { start_index: 0, total_hits: 1, total_hit_relation: "eq", channel_list: [ { config_id: "1", name: "1", description: "2", config_type: "chime", is_enabled: true, }, ], }, }; } ); const onChangeMock = jest.fn(); const { container, getByTestId } = renderWithServiceAndCore({ onChange: onChangeMock, }); await waitFor(() => { expect(container.querySelector(".euiLoadingSpinner")).toBeNull(); }); await waitFor(() => { expect(browserServicesMock.notificationService.getChannels).toBeCalledTimes(1); }); expect(container).toMatchSnapshot(); await userEvent.type(getByTestId("1")?.querySelector('[data-test-subj="comboBoxSearchInput"]') as Element, "1{enter}"); await waitFor(() => { expect(onChangeMock).toBeCalledTimes(1); expect(onChangeMock).toBeCalledWith([ { id: "1", }, ]); }); }); });