import React from "react";
import { IconWrapper } from "@design-system/widgets-old";
import { fireEvent, render } from "@testing-library/react";
import type { SelectButtonProps } from "./SelectButton";
import SelectButton from "./SelectButton";
// It is necessary to make a mock of the Icon component as the error falls due to React.lazy in importIconImpl
jest.mock("@design-system/widgets-old", () => {
const originalModule = jest.requireActual("@design-system/widgets-old");
return {
__esModule: true,
...originalModule,
Icon: (props: any) => {
return ;
},
};
});
const defaultProps: SelectButtonProps = {
disabled: false,
displayText: "0",
handleCancelClick: jest.fn(),
spanRef: null,
togglePopoverVisibility: jest.fn(),
tooltipText: "",
value: "0",
};
const renderComponent = (props: SelectButtonProps = defaultProps) => {
return render();
};
describe("SelectButton", () => {
it("should not fire click event when disabled", () => {
const { getByTestId, getByText } = renderComponent({
...defaultProps,
disabled: true,
});
fireEvent.click(getByTestId("selectbutton.btn.main"));
expect(defaultProps.togglePopoverVisibility).not.toBeCalled();
expect(getByText("0")).toBeTruthy();
});
it("should render correctly", async () => {
const { getByText } = renderComponent();
expect(getByText("0")).toBeTruthy();
});
it("should trigger handleCancelClick method on cancel click", () => {
const { getByTestId } = renderComponent();
fireEvent.click(getByTestId("selectbutton.btn.cancel"));
expect(defaultProps.handleCancelClick).toBeCalled();
});
it("should toggle popover visibility method on button click", () => {
const { getByTestId } = renderComponent();
fireEvent.click(getByTestId("selectbutton.btn.main"));
expect(defaultProps.togglePopoverVisibility).toBeCalled();
});
});