import React from "react"; import RadioButtonControl from "./RadioButtonControl"; import { render, screen } from "test/testUtils"; import { Provider } from "react-redux"; import { reduxForm } from "redux-form"; import configureStore from "redux-mock-store"; import "@testing-library/jest-dom"; const mockStore = configureStore([]); // eslint-disable-next-line @typescript-eslint/no-explicit-any function TestForm(props: any) { return
{props.children}
; } const ReduxFormDecorator = reduxForm({ form: "TestForm", })(TestForm); const mockOptions = [ { label: "Option 1", value: "option1", children: "Option 1" }, { label: "Option 2", value: "option2", children: "Option 2" }, { label: "Option 3", value: "option3", children: "Option 3" }, ]; let radioButtonProps = { options: mockOptions, configProperty: "actionConfiguration.testPath", controlType: "PROJECTION", label: "Columns", id: "column", formName: "", isValid: true, initialValue: "option1", }; describe("RadioButtonControl", () => { const mockStoreInstance = mockStore(); let store: typeof mockStoreInstance; beforeEach(() => { store = mockStore(); }); it("should render RadioButtonControl and options properly", async () => { render( , ); const radioButton = (await screen.findByTestId( "actionConfiguration.testPath", )) as HTMLElement; expect(radioButton).toBeInTheDocument(); const options = screen.getAllByRole("radio"); expect(options).toHaveLength(3); }); it("should show the default selected option", async () => { radioButtonProps = { ...radioButtonProps, }; render( , ); const radioButton = (await screen.findByTestId( "actionConfiguration.testPath", )) as HTMLElement; expect(radioButton).toBeInTheDocument(); const options = screen.getAllByRole("radio"); expect(options[0]).toBeChecked(); expect(options[1]).not.toBeChecked(); expect(options[2]).not.toBeChecked(); }); it("should select the option when clicked", async () => { radioButtonProps = { ...radioButtonProps, }; render( , ); const radioButton = (await screen.findByTestId( "actionConfiguration.testPath", )) as HTMLElement; expect(radioButton).toBeInTheDocument(); const options = screen.getAllByRole("radio"); expect(options[0]).toBeChecked(); expect(options[1]).not.toBeChecked(); expect(options[2]).not.toBeChecked(); options[1].click(); expect(options[0]).not.toBeChecked(); expect(options[1]).toBeChecked(); expect(options[2]).not.toBeChecked(); }); });