Fix Collapsible controlled mode

This commit is contained in:
Mats Bosson 2026-03-29 08:03:31 +07:00
parent 7359cd8d8f
commit 4c3005aa74

View File

@ -1,5 +1,5 @@
import { fireEvent, render, screen } from "@solidjs/testing-library";
import { describe, expect, it } from "vitest";
import { describe, expect, it, vi } from "vitest";
import { Collapsible } from "../../../src/components/collapsible/index";
describe("Collapsible", () => {
@ -80,13 +80,16 @@ describe("Collapsible", () => {
expect(screen.getByTestId("content")).toHaveAttribute("hidden");
});
it("controlled open state", () => {
it("controlled: open=false keeps content hidden after click and calls onOpenChange", () => {
const onOpenChange = vi.fn();
render(() => (
<Collapsible open={true} onOpenChange={() => {}}>
<Collapsible open={false} onOpenChange={onOpenChange}>
<Collapsible.Trigger>Toggle</Collapsible.Trigger>
<Collapsible.Content data-testid="content">Content</Collapsible.Content>
</Collapsible>
));
expect(screen.getByTestId("content")).not.toHaveAttribute("hidden");
fireEvent.click(screen.getByRole("button"));
expect(screen.getByTestId("content")).toHaveAttribute("hidden");
expect(onOpenChange).toHaveBeenCalledWith(true);
});
});