import { render, screen } from "@testing-library/react";
import { describe, expect, it } from "vitest";
import { TokenUsageAdminTiles } from "../TokenUsageAdminTiles";
const row = (scope: string, window: string, cost: number, calls = 1) =>
({ id: `${scope}|${window}`, scope, window, cost, credits: 0, tokensIn: 0, tokensOut: 0, cached: 0, calls }) as any;
const summary = [
row("customer", "current", 9.46, 2956),
row("platform", "current", 9.47, 7681),
row("total", "current", 18.93, 10637),
row("customer", "previous", 8.0, 2000),
row("platform", "previous", 10.0, 8000),
row("total", "previous", 18.0, 10000),
];
describe("TokenUsageAdminTiles", () => {
it("shows both cost centres with their deltas against the previous window", () => {
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("tile-customer")).toHaveTextContent("9.46");
expect(screen.getByTestId("tile-platform")).toHaveTextContent("9.47");
// customer 9.46 vs 8.00 => +18%
expect(screen.getByTestId("tile-customer-delta")).toHaveTextContent("18");
// platform 9.47 vs 10.00 => -5%
expect(screen.getByTestId("tile-platform-delta")).toHaveTextContent("5");
});
it("hides the platform tile in single-customer mode", () => {
render();
expect(screen.getByTestId("tile-customer")).toBeInTheDocument();
expect(screen.queryByTestId("tile-platform")).not.toBeInTheDocument();
});
it("suppresses the delta rather than showing Infinity when the previous window is zero", () => {
const zeroPrev = summary.map((r) => (r.window === "previous" ? { ...r, cost: 0 } : r));
render();
expect(screen.getByTestId("tile-customer-delta")).toHaveTextContent("—");
});
});