/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import React from "react"; import "@testing-library/jest-dom/extend-expect"; import { render, fireEvent } from "@testing-library/react"; import { httpClientMock } from "../../../test/mocks"; import { mockQueryResultJDBCResponse, mockNotOkQueryResultResponse, mockQueryTranslationResponse, mockResultWithNull } from "../../../test/mocks/mockData"; import Main from "./main"; const setBreadcrumbsMock = jest.fn(); describe("
spec", () => { it("renders the component", () => { render(
); expect(document.body.children[0]).toMatchSnapshot(); }); it("click run button, and response is ok", async () => { const client = httpClientMock; client.post = jest.fn().mockResolvedValue(mockQueryResultJDBCResponse); const { getByText } = render(
); const onRunButton = getByText('Run'); const asyncTest = () => { fireEvent.click(onRunButton); }; await asyncTest(); expect(document.body.children[0]).toMatchSnapshot(); }); it("click run button, response fills null and missing values", async () => { const client = httpClientMock; client.post = jest.fn().mockResolvedValue(mockResultWithNull); const { getByText } = render(
); const onRunButton = getByText('Run'); const asyncTest = () => { fireEvent.click(onRunButton); }; await asyncTest(); expect(document.body.children[0]).toMatchSnapshot(); }) it("click run button, and response causes an error", async () => { const client = httpClientMock; client.post = jest.fn().mockRejectedValue('err'); const { getByText } = render(
); const onRunButton = getByText('Run'); const asyncTest = () => { fireEvent.click(onRunButton); }; await asyncTest(); expect(document.body.children[0]).toMatchSnapshot(); }); it("click run button, and response is not ok", async () => { const client = httpClientMock; client.post = jest.fn().mockResolvedValue(mockNotOkQueryResultResponse); const { getByText } = render(
); const onRunButton = getByText('Run'); const asyncTest = () => { fireEvent.click(onRunButton); }; await asyncTest(); expect(document.body.children[0]).toMatchSnapshot(); }); it("click translation button, and response is ok", async () => { const client = httpClientMock; client.post = jest.fn().mockResolvedValue(mockQueryTranslationResponse); const { getByText } = render(
); const onTranslateButton = getByText('Explain'); const asyncTest = () => { fireEvent.click(onTranslateButton); }; await asyncTest(); expect(document.body.children[0]).toMatchSnapshot(); }); it("click clear button", async () => { const client = httpClientMock; const { getByText } = render(
); const onClearButton = getByText('Clear'); const asyncTest = () => { fireEvent.click(onClearButton); }; await asyncTest(); expect(client.post).not.toHaveBeenCalled(); expect(document.body.children[0]).toMatchSnapshot(); }); });