import React from "react";
import "@testing-library/jest-dom/extend-expect";
import { render, fireEvent } from "@testing-library/react";
import { RadioButtonGroup } from "../../../";
test("should show radiobuttons", () => {
const onClick = jest.fn();
const buttons: {
name: string;
label: string;
value: string | number | boolean;
}[] = [1, 2, 3].map(i => {
return {
name: `Button${i}`,
label: `Button ${i}`,
value: `${i}`
};
});
buttons.push({
name: `Button_number`,
label: `Button 5`,
value: 5
});
buttons.push({
name: `Button_number`,
label: `Button 5`,
value: false
});
const { queryByTestId } = render(
);
expect(queryByTestId("honeyui-radio-group-1")).toBeTruthy();
expect(queryByTestId("honeyui-radio-group-1")).not.toHaveClass("form-radio-inline");
expect((queryByTestId("honeyui-radio-group-1-input") as HTMLInputElement).checked).not.toBe(true);
expect(queryByTestId("honeyui-radio-group-2")).toBeTruthy();
expect((queryByTestId("honeyui-radio-group-2-input") as HTMLInputElement).checked).toBe(true);
expect(queryByTestId("honeyui-radio-group-3")).toBeTruthy();
expect((queryByTestId("honeyui-radio-group-3-input") as HTMLInputElement).checked).not.toBe(true);
expect(queryByTestId("honeyui-radio-group-label")).toHaveTextContent("Radio Label");
expect(queryByTestId("honeyui-radio-group-help")).toHaveTextContent("Radio Help");
expect(queryByTestId("honeyui-radio-group-error")).toHaveTextContent("Required");
});
test("should check inline value", () => {
const onClick = jest.fn();
const buttons = [1, 2, 3].map(i => {
return {
name: `Button${i}`,
label: `Button ${i}`,
value: `${i}`
};
});
const { queryByTestId } = render(
);
expect(queryByTestId("honeyui-radio-group-1")).toHaveClass("form-radio-inline");
expect(queryByTestId("honeyui-radio-group-2")).toHaveClass("form-radio-inline");
expect(queryByTestId("honeyui-radio-group-3")).toHaveClass("form-radio-inline");
});
test("should use default selection", () => {
const onClick = jest.fn();
const buttons = [1, 2, 3].map(i => {
return {
name: `Button${i}`,
label: `Button ${i}`,
value: `${i}`
};
});
const { queryByTestId } = render(
);
expect((queryByTestId("honeyui-radio-group-1-input") as HTMLInputElement).checked).not.toBe(true);
expect((queryByTestId("honeyui-radio-group-2-input") as HTMLInputElement).checked).not.toBe(true);
expect((queryByTestId("honeyui-radio-group-3-input") as HTMLInputElement).checked).toBe(true);
});
test("should support interactions", () => {
const onClick = jest.fn();
const buttons: {
name: string;
label: string;
value: string | number | boolean;
}[] = [1, 2, 3].map(i => {
return {
name: `Button${i}`,
label: `Button ${i}`,
value: `${i}`
};
});
buttons.push({
name: `Button_number`,
label: `Button 5`,
value: 5
});
buttons.push({
name: `Button_false`,
label: `Button false`,
value: false
});
buttons.push({
name: `Button_true`,
label: `Button true`,
value: true
});
const { queryByTestId, rerender } = render(
);
expect((queryByTestId("radio-true-input") as HTMLInputElement).checked).toBe(true);
expect(onClick).toBeCalledTimes(0);
fireEvent.click(queryByTestId("radio-false-input"));
expect(onClick).toBeCalledTimes(1);
expect(onClick).lastCalledWith(false);
rerender(
);
expect((queryByTestId("radio-false-input") as HTMLInputElement).checked).toBe(true);
fireEvent.click(queryByTestId("radio-false-input"));
expect(onClick).toBeCalledTimes(1);
fireEvent.click(queryByTestId("radio-1-input"));
expect(onClick).toBeCalledTimes(2);
expect(onClick).lastCalledWith("1");
fireEvent.click(queryByTestId("radio-5-input"));
expect(onClick).toBeCalledTimes(3);
expect(onClick).lastCalledWith(5);
});