import { render, screen } from "@testing-library/react"; import { describe, expect, it } from "vitest"; import { TokenUsageRankedBar } from "../TokenUsageRankedBar"; const row = (id: string, label: string, cost: number) => ({ id, label, cost, credits: 0, tokensIn: 0, tokensOut: 0, cached: 0, calls: 1 }) as any; describe("TokenUsageRankedBar", () => { it("direct-labels each row with its value and its share of the total", () => { render( , ); // The suite mocks useLocale() as "en", and formatting now honours the // locale instead of a hard-coded it-IT, so the separator is a point. expect(screen.getByTestId("ranked-value-a")).toHaveTextContent("6.00"); expect(screen.getByTestId("ranked-share-a")).toHaveTextContent("60"); expect(screen.getByTestId("ranked-share-b")).toHaveTextContent("40"); }); it("renders the empty label when there are no rows", () => { render(); expect(screen.getByText("nessun dato")).toBeInTheDocument(); }); it("assigns colour by rank position from one ramp, so no two rows share an identity hue by accident", () => { render( , ); const colours = ["a", "b", "c"].map((id) => screen.getByTestId(`ranked-fill-${id}`).getAttribute("data-ramp-step")); expect(new Set(colours).size).toBe(3); expect(colours).toEqual(["0", "1", "2"]); }); });