import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { describe, expect, it, vi } from "vitest"; import { ContextMenuContainer } from "#/components/features/context-menu/context-menu-container"; describe("ContextMenuContainer", () => { const user = userEvent.setup(); const onCloseMock = vi.fn(); it("should render children", () => { render(
Child 1
Child 2
, ); expect(screen.getByTestId("child-1")).toBeInTheDocument(); expect(screen.getByTestId("child-2")).toBeInTheDocument(); }); it("should apply consistent base styling", () => { render(
Content
, ); const container = screen.getByTestId("test-container"); expect(container).toHaveClass("bg-[#050505]"); expect(container).toHaveClass("border"); expect(container).toHaveClass("border-[#242424]"); expect(container).toHaveClass("rounded-[12px]"); expect(container).toHaveClass("p-[25px]"); expect(container).toHaveClass("context-menu-box-shadow"); }); it("should call onClose when clicking outside", async () => { render(
Content
, ); await user.click(document.body); expect(onCloseMock).toHaveBeenCalledOnce(); }); it("should render children in a flex row layout", () => { render(
Child 1
Child 2
, ); const container = screen.getByTestId("test-container"); const innerDiv = container.firstChild as HTMLElement; expect(innerDiv).toHaveClass("flex"); expect(innerDiv).toHaveClass("flex-row"); expect(innerDiv).toHaveClass("gap-4"); }); it("should apply additional className when provided", () => { render(
Content
, ); const container = screen.getByTestId("test-container"); expect(container).toHaveClass("custom-class"); }); });