import { describe, it, expect, vi } from "vitest"; import { render, screen } from "@testing-library/react"; import { TaskCard } from "./TaskCard"; import type { Task } from "@hai/core"; // Mock lucide-react to avoid SVG rendering issues in test env vi.mock("lucide-react", () => ({ Link: () => null, Clock: () => null, })); function makeTask(overrides: Partial = {}): Task { return { id: "HAI-001", title: "Test task", column: "in-progress", status: undefined as any, steps: [], dependencies: [], description: "", ...overrides, } as Task; } const noop = () => {}; describe("TaskCard", () => { it("renders the card ID text", () => { render(); expect(screen.getByText("HAI-001")).toBeDefined(); }); it("renders the status badge when task.status is set", () => { render( , ); expect(screen.getByText("executing")).toBeDefined(); }); it("renders the status badge after the card ID in DOM order", () => { const { container } = render( , ); const cardId = container.querySelector(".card-id")!; const badge = container.querySelector(".card-status-badge")!; expect(cardId).toBeDefined(); expect(badge).toBeDefined(); // Badge should be the next sibling of card-id expect(cardId.nextElementSibling).toBe(badge); }); it("does not render a status badge when task.status is falsy", () => { const { container } = render( , ); expect(container.querySelector(".card-status-badge")).toBeNull(); }); });