import { describe, expect, it } from "vitest"; import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { axe } from "vitest-axe"; import { useState } from "react"; import { ToggleGroup } from "./ToggleGroup"; const ITEMS = [ { value: "list", label: "Liste" }, { value: "grid", label: "Grille" }, { value: "kanban", label: "Kanban" }, ]; function Single() { const [v, setV] = useState("list"); return ( ); } function Multiple() { const [v, setV] = useState(["list", "grid"]); return ( ); } describe("ToggleGroup", () => { it("rend tous les items en single", () => { render(); expect(screen.getAllByRole("radio")).toHaveLength(3); }); it("clic toggle l'item en single", async () => { const user = userEvent.setup(); render(); await user.click(screen.getByRole("radio", { name: "Grille" })); expect(screen.getByRole("radio", { name: "Grille" })).toHaveAttribute("data-state", "on"); }); it("rend en mode multiple plusieurs actifs", () => { render(); const buttons = screen.getAllByRole("button"); expect(buttons.filter((b) => b.getAttribute("data-state") === "on")).toHaveLength(2); }); it("a11y axe-core", async () => { const { container } = render(); expect(await axe(container)).toHaveNoViolations(); }); });