// @vitest-environment jsdom import { cleanup, render, screen } from "@testing-library/react"; import { userEvent } from "@testing-library/user-event"; import { afterEach, beforeAll, describe, expect, it, vi } from "vitest"; import { polyfillDialog } from "../../__tests__/polyfill-dialog.js"; import { Dialog, DialogHeader } from "../ui/dialog.js"; beforeAll(() => { polyfillDialog(); }); afterEach(cleanup); describe("Dialog", () => { it("opens when open=true", () => { render( {}}> Content , ); expect(screen.getByText("Content")).toBeDefined(); }); it("closes when open changes from true to false", () => { const { rerender } = render( {}}> Content , ); const dialog = document.querySelector("dialog"); expect(dialog?.hasAttribute("open")).toBe(true); rerender( {}}> Content , ); expect(dialog?.hasAttribute("open")).toBe(false); }); it("calls onClose on cancel event", () => { const onClose = vi.fn(); render( Content , ); const dialog = document.querySelector("dialog"); dialog?.dispatchEvent(new Event("cancel")); expect(onClose).toHaveBeenCalledOnce(); }); }); describe("DialogHeader", () => { it("renders title and close button", async () => { const onClose = vi.fn(); render(); expect(screen.getByText("Test Title")).toBeDefined(); await userEvent.click(screen.getByRole("button")); expect(onClose).toHaveBeenCalledOnce(); }); });