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");
});
});