import { DensityProvider } from "$lib/density-context"; import { cleanup, fireEvent, render, screen } from "@solidjs/testing-library"; import { afterEach, describe, expect, it, vi } from "vitest"; import { Button } from "../Button"; describe("Button", () => { afterEach(cleanup); it("renders with default props", () => { render(() => ); const button = screen.getByRole("button", { name: /click me/i }); expect(button).toBeInTheDocument(); }); it("renders with correct variant", () => { render(() => ); const button = screen.getByRole("button", { name: /secondary/i }); expect(button).toHaveClass("bg-gray-800"); }); it("renders with correct size", () => { render(() => ); const button = screen.getByRole("button", { name: /large/i }); expect(button).toHaveClass("px-6 py-3"); }); it("handles click events", () => { const handleClick = vi.fn(); render(() => ); const button = screen.getByRole("button", { name: /click me/i }); fireEvent.click(button); expect(handleClick).toHaveBeenCalled(); }); describe("density support", () => { it("renders with density prop", () => { render(() => ); const button = screen.getByRole("button", { name: /button/i }); expect(button).toBeInTheDocument(); }); it("renders within DensityProvider", () => { render(() => ( )); const button = screen.getByRole("button", { name: /button/i }); expect(button).toBeInTheDocument(); }); it("accepts all density modes", () => { const { unmount } = render(() => ); expect(screen.getByRole("button")).toBeInTheDocument(); unmount(); render(() => ); expect(screen.getByRole("button")).toBeInTheDocument(); }); }); });