import { render, screen } from "@testing-library/react"; import type { ComponentProps } from "react"; import { StatusBadge } from "@/components/ui/status-badge"; // @ts-expect-error "running" is a step status, not a review decision. const invalidReviewDecisionProps: ComponentProps = { variant: "reviewDecision", status: "running", }; test("renders the waiting review label", () => { render(); expect(screen.getByText("待审核")).toBeInTheDocument(); }); test("uses order status metadata for the rendered tone", () => { render(); expect(screen.getByText("失败")).toHaveAttribute("data-tone", "danger"); }); test("can render review decision metadata when a variant is provided", () => { render(); expect(screen.getByText("驳回")).toHaveAttribute("data-tone", "danger"); }); test("renders step status metadata for the stepStatus variant", () => { render(); expect(screen.getByText("执行中")).toHaveAttribute("data-tone", "info"); }); test("renders workflow step metadata for the workflowStep variant", () => { render(); expect(screen.getByText("人工审核")).toHaveAttribute("data-tone", "warning"); }); test("throws a descriptive error for invalid runtime status and variant pairings", () => { expect(() => render(), ).toThrow('Invalid status "reject" for variant "order".'); expect(invalidReviewDecisionProps.variant).toBe("reviewDecision"); });