import { fireEvent, render, screen } from "@solidjs/testing-library";
import { describe, expect, it } from "vitest";
import { Drawer } from "../../../src/components/drawer/index";
describe("Drawer", () => {
it("closed by default", () => {
render(() => (
Title
));
expect(screen.queryByRole("dialog")).toBeNull();
});
it("opens with defaultOpen=true", () => {
render(() => (
Title
));
expect(screen.getByRole("dialog")).toBeTruthy();
});
it("trigger click opens drawer", () => {
render(() => (
Open
Title
));
fireEvent.click(screen.getByText("Open"));
expect(screen.getByRole("dialog")).toBeTruthy();
});
it("Close button closes drawer", () => {
render(() => (
Title
Close
));
fireEvent.click(screen.getByText("Close"));
expect(screen.queryByRole("dialog")).toBeNull();
});
it("Escape key closes drawer", () => {
render(() => (
Title
));
fireEvent.keyDown(document, { key: "Escape" });
expect(screen.queryByRole("dialog")).toBeNull();
});
it("content has role=dialog and aria-modal", () => {
render(() => (
Title
));
const dialog = screen.getByRole("dialog");
expect(dialog.getAttribute("aria-modal")).toBe("true");
});
it("data-side defaults to right", () => {
render(() => (
Title
));
expect(screen.getByTestId("content").getAttribute("data-side")).toBe("right");
});
it("data-side reflects side prop", () => {
render(() => (
Title
));
expect(screen.getByTestId("content").getAttribute("data-side")).toBe("left");
});
it("title linked via aria-labelledby", () => {
render(() => (
My Drawer
));
const dialog = screen.getByRole("dialog");
const title = screen.getByText("My Drawer");
expect(dialog.getAttribute("aria-labelledby")).toBe(title.id);
});
});