import userEvent from "@testing-library/user-event"; import React from "react"; import { render, screen } from "@testing-library/react"; import { Checkbox, CheckboxGroup } from ":/components/Forms/Checkbox/index"; describe("", () => { it("renders and can be checked", async () => { const user = userEvent.setup(); render(); const input: HTMLInputElement = screen.getByRole("checkbox", { name: "Agree", }); expect(input.checked).toEqual(false); await user.click(input); expect(input.checked).toEqual(true); }); it("renders with default value and can be unchecked", async () => { const user = userEvent.setup(); render(); const input: HTMLInputElement = screen.getByRole("checkbox", { name: "Agree", }); expect(input.checked).toEqual(true); await user.click(input); expect(input.checked).toEqual(false); }); it("renders with indeterminate state", async () => { render(); expect(document.querySelector("svg.indeterminate")).toBeInTheDocument(); }); it("renders disabled", async () => { render(); expect(screen.getByRole("checkbox", { name: "Agree" })).toBeDisabled(); // Click and expect the checkbox does not get checked const user = userEvent.setup(); const input: HTMLInputElement = screen.getByRole("checkbox", { name: "Agree", }); expect(input.checked).toEqual(false); await user.click(input); expect(input.checked).toEqual(false); }); it("renders with text", async () => { render(); expect(screen.getByText("Text")).toBeInTheDocument(); }); it("renders with state=success", async () => { render(); expect(screen.getByText("Success text")).toBeInTheDocument(); expect( document.querySelector(".c__field.c__field--success"), ).toBeInTheDocument(); }); it("renders with state=error", async () => { render(); expect(screen.getByText("Error text")).toBeInTheDocument(); expect( document.querySelector(".c__field.c__field--error"), ).toBeInTheDocument(); }); it("renders with group", async () => { render( , ); screen.getByRole("checkbox", { name: "Agree", }); screen.getByRole("checkbox", { name: "Disagree", }); }); it("renders with group text", async () => { render( , ); expect(screen.getByText("Text")).toBeInTheDocument(); }); it("renders with group state=success", async () => { render( , ); expect(screen.getByText("Success text")).toBeInTheDocument(); expect( document.querySelector(".c__checkbox__group.c__field.c__field--success"), ).toBeInTheDocument(); }); it("renders with group state=error", async () => { render( , ); expect(screen.getByText("Error text")).toBeInTheDocument(); expect( document.querySelector(".c__checkbox__group.c__field.c__field--error"), ).toBeInTheDocument(); }); });