monday-ui-react-core
Version:
Official monday.com UI resources for application development in React.js
67 lines (57 loc) • 2.17 kB
JavaScript
import React from "react";
import renderer from "react-test-renderer";
import { render, screen, cleanup, fireEvent } from "@testing-library/react";
import RadioButton from "../RadioButton";
describe("RadioButton Tests", () => {
describe("Snapshot Tests", () => {
it("renders correctly", () => {
const tree = renderer
.create(<RadioButton componentClassName="dummy-class-name" name="radios" value="option1" text="Option 1" />)
.toJSON();
expect(tree).toMatchSnapshot();
});
it("renders correctly with empty props", () => {
const tree = renderer.create(<RadioButton />).toJSON();
expect(tree).toMatchSnapshot();
});
});
describe("Integration Tests", () => {
const formName = "myForm";
const radiosName = "radios";
const option1Value = "1";
const option1Text = "Option 1";
const option2Value = "2";
const option2Text = "Option 2";
const option3Value = "3";
const option3Text = "Option 3";
beforeEach(() => {
render(
<form name={formName}>
<RadioButton name={radiosName} value={option1Value} text={option1Text} defaultChecked={true} />
<RadioButton name={radiosName} value={option2Value} text={option2Text} />
<RadioButton name={radiosName} value={option3Value} text={option3Text} />
</form>
);
});
afterEach(() => {
cleanup();
});
it("should default select 1st option", () => {
const option1 = screen.getByLabelText(option1Text);
const option2 = screen.getByLabelText(option2Text);
const option3 = screen.getByLabelText(option3Text);
expect(option1.checked).toBeTruthy();
expect(option2.checked).toBeFalsy();
expect(option3.checked).toBeFalsy();
});
it("should select 2nd option", () => {
const option1 = screen.getByLabelText(option1Text);
const option2 = screen.getByLabelText(option2Text);
const option3 = screen.getByLabelText(option3Text);
fireEvent.click(option2);
expect(option1.checked).toBeFalsy();
expect(option2.checked).toBeTruthy();
expect(option3.checked).toBeFalsy();
});
});
});