Fix Collapsible controlled mode
This commit is contained in:
parent
7359cd8d8f
commit
4c3005aa74
@ -1,5 +1,5 @@
|
|||||||
import { fireEvent, render, screen } from "@solidjs/testing-library";
|
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";
|
import { Collapsible } from "../../../src/components/collapsible/index";
|
||||||
|
|
||||||
describe("Collapsible", () => {
|
describe("Collapsible", () => {
|
||||||
@ -80,13 +80,16 @@ describe("Collapsible", () => {
|
|||||||
expect(screen.getByTestId("content")).toHaveAttribute("hidden");
|
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(() => (
|
render(() => (
|
||||||
<Collapsible open={true} onOpenChange={() => {}}>
|
<Collapsible open={false} onOpenChange={onOpenChange}>
|
||||||
<Collapsible.Trigger>Toggle</Collapsible.Trigger>
|
<Collapsible.Trigger>Toggle</Collapsible.Trigger>
|
||||||
<Collapsible.Content data-testid="content">Content</Collapsible.Content>
|
<Collapsible.Content data-testid="content">Content</Collapsible.Content>
|
||||||
</Collapsible>
|
</Collapsible>
|
||||||
));
|
));
|
||||||
expect(screen.getByTestId("content")).not.toHaveAttribute("hidden");
|
fireEvent.click(screen.getByRole("button"));
|
||||||
|
expect(screen.getByTestId("content")).toHaveAttribute("hidden");
|
||||||
|
expect(onOpenChange).toHaveBeenCalledWith(true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user