import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { describe, expect, it, vi } from "vitest"; import { Button } from "./button"; describe("Button", () => { it("renders its children", () => { render(); expect( screen.getByRole("button", { name: "Click me" }), ).toBeInTheDocument(); }); it("fires onClick when activated", async () => { const onClick = vi.fn(); const user = userEvent.setup(); render(); await user.click(screen.getByRole("button", { name: "Submit" })); expect(onClick).toHaveBeenCalledTimes(1); }); it("applies the variant class for destructive buttons", () => { render(); expect(screen.getByRole("button", { name: "Delete" })).toHaveClass( "bg-destructive", ); }); it("does not fire onClick while disabled", async () => { const onClick = vi.fn(); const user = userEvent.setup(); render( , ); await user.click(screen.getByRole("button", { name: "Disabled" })); expect(onClick).not.toHaveBeenCalled(); }); });