/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import React from "react"; import { render, fireEvent } from "@testing-library/react"; import DateHistogramPanel from "./DateHistogramPanel"; import { IntervalType } from "../../../../../../utils/constants"; import { GROUP_TYPES, TRANSFORM_AGG_TYPE } from "../../../../../../../models/interfaces"; describe(" spec", () => { it("renders the component with fixed interval", async () => { const { container } = render( {}} aggList={[]} closePopover={() => {}} intervalType={IntervalType.FIXED} /> ); expect(container.firstChild).toMatchSnapshot(); }); it("renders the component with calendar interval", async () => { const { container } = render( {}} aggList={[]} closePopover={() => {}} intervalType={IntervalType.CALENDAR} /> ); expect(container.firstChild).toMatchSnapshot(); }); it("calls closePopover when clicking cancel button", async () => { const closePopover = jest.fn(); const { getByTestId } = render( {}} aggList={[]} closePopover={closePopover} intervalType={IntervalType.FIXED} /> ); fireEvent.click(getByTestId("dateHistogramPanelCancelButton")); expect(closePopover).toHaveBeenCalledTimes(1); }); it("uses interval 1 when defined by calendar interval", async () => { const handleGroupSelectionChange = jest.fn(); const name = "test"; const intervalType = IntervalType.CALENDAR; const targetFieldName = `${name} _${GROUP_TYPES.dateHistogram}_1_y_${IntervalType.CALENDAR}`; const expectedGroupItem = { date_histogram: { source_field: name, target_field: targetFieldName, calendar_interval: "1y", }, }; const { queryByText, getByTestId } = render( {}} intervalType={intervalType} /> ); // Shows the "Every 1" text expect(queryByText("Every 1")).not.toBeNull(); fireEvent.change(getByTestId("dateHistogramTimeunitSelect"), { target: { value: "y" } }); fireEvent.click(getByTestId("dateHistogramPanelOKButton")); expect(handleGroupSelectionChange).toHaveBeenCalledWith(expectedGroupItem, TRANSFORM_AGG_TYPE.date_histogram, targetFieldName); }); it("uses correct interval when defined by fixed interval", async () => { const handleGroupSelectionChange = jest.fn(); const name = "test"; const intervalType = IntervalType.FIXED; const intervalValue = 234; const targetFieldName = `${name} _${GROUP_TYPES.dateHistogram}_234_s_${IntervalType.FIXED}`; const expectedGroupItem = { date_histogram: { source_field: name, target_field: targetFieldName, fixed_interval: "234s", }, }; const { getByTestId } = render( {}} intervalType={intervalType} /> ); fireEvent.change(getByTestId("dateHistogramValueInput"), { target: { value: intervalValue } }); fireEvent.change(getByTestId("dateHistogramTimeunitSelect"), { target: { value: "s" } }); fireEvent.click(getByTestId("dateHistogramPanelOKButton")); expect(handleGroupSelectionChange).toHaveBeenCalledWith(expectedGroupItem, TRANSFORM_AGG_TYPE.date_histogram, targetFieldName); }); });