import { cleanup, render, screen } from "@testing-library/react"; import { afterEach, describe, expect, it, vi } from "vitest"; import { ImplementPlanButton } from "./implement-plan-button"; vi.mock("@kandev/ui/tooltip", () => ({ Tooltip: ({ children }: { children: React.ReactNode }) => <>{children}, TooltipContent: ({ children }: { children: React.ReactNode }) => <>{children}, TooltipTrigger: ({ children }: { children: React.ReactNode }) => <>{children}, })); vi.mock("@kandev/ui/dropdown-menu", () => ({ DropdownMenu: ({ children }: { children: React.ReactNode }) => <>{children}, DropdownMenuContent: ({ children }: { children: React.ReactNode }) => <>{children}, DropdownMenuItem: ({ children }: { children: React.ReactNode }) => <>{children}, DropdownMenuTrigger: ({ children }: { children: React.ReactNode }) => <>{children}, })); vi.mock("react-i18next", () => ({ useTranslation: () => ({ t: (key: string) => key }), })); afterEach(cleanup); describe("ImplementPlanButton presentation", () => { it("gives both split-button controls touch-safe geometry on mobile", () => { render(); for (const testId of ["implement-plan-button", "implement-plan-menu-trigger"]) { const control = screen.getByTestId(testId); expect(control.className).toContain("min-h-11"); expect(control.className).toContain("min-w-11"); } }); it("keeps both split-button controls compact by default", () => { render(); for (const testId of ["implement-plan-button", "implement-plan-menu-trigger"]) { const control = screen.getByTestId(testId); expect(control.className).toContain("h-7"); expect(control.className).not.toContain("min-h-11"); expect(control.className).not.toContain("min-w-11"); } }); });