import { fireEvent, render, screen } from "@solidjs/testing-library"; import { describe, expect, it } from "vitest"; import { Collapsible } from "../../../src/components/collapsible/index"; describe("Collapsible", () => { it("content is hidden by default", () => { render(() => ( Toggle Hidden )); expect(screen.getByTestId("content")).toHaveAttribute("hidden"); }); it("content is shown when defaultOpen=true", () => { render(() => ( Toggle Visible )); expect(screen.getByTestId("content")).not.toHaveAttribute("hidden"); }); it("trigger click opens content", () => { render(() => ( Toggle Content )); fireEvent.click(screen.getByRole("button")); expect(screen.getByTestId("content")).not.toHaveAttribute("hidden"); }); it("trigger click closes open content", () => { render(() => ( Toggle Content )); fireEvent.click(screen.getByRole("button")); expect(screen.getByTestId("content")).toHaveAttribute("hidden"); }); it("trigger has aria-expanded reflecting open state", () => { render(() => ( Toggle Content )); expect(screen.getByRole("button").getAttribute("aria-expanded")).toBe("false"); fireEvent.click(screen.getByRole("button")); expect(screen.getByRole("button").getAttribute("aria-expanded")).toBe("true"); }); it("trigger aria-controls matches content id", () => { render(() => ( Toggle Content )); const trigger = screen.getByRole("button"); const content = screen.getByTestId("content"); expect(trigger.getAttribute("aria-controls")).toBe(content.id); }); it("disabled trigger does not toggle", () => { render(() => ( Toggle Content )); fireEvent.click(screen.getByRole("button")); expect(screen.getByTestId("content")).toHaveAttribute("hidden"); }); it("controlled open state", () => { render(() => ( {}}> Toggle Content )); expect(screen.getByTestId("content")).not.toHaveAttribute("hidden"); }); });