import { render, screen } from "@testing-library/react"; import { describe, expect, it } from "vitest"; import { TokenUsageTimelineChart } from "../TokenUsageTimelineChart"; const row = (bucket: string, series: string, cost: number) => ({ id: `${bucket}|${series}`, bucket: new Date(bucket), series, cost, credits: 0, tokensIn: 0, tokensOut: 0, cached: 0, calls: 1, }) as any; describe("TokenUsageTimelineChart", () => { it("pivots flat rows into one entry per bucket with a key per series", () => { render( , ); const data = JSON.parse(screen.getByTestId("timeline-data").textContent!); expect(data).toHaveLength(2); expect(data[0]).toMatchObject({ customer: 1, platform: 2 }); expect(data[1]).toMatchObject({ customer: 3 }); }); it("folds series beyond the 7-colour ceiling into a single 'other' series", () => { const rows = Array.from({ length: 10 }, (_, i) => row("2026-08-01", `type${i}`, 10 - i)); render(); const series = JSON.parse(screen.getByTestId("timeline-series").textContent!); expect(series).toHaveLength(8); expect(series[7]).toBe("other"); }); it("renders the empty state without a chart when there are no rows", () => { render(); expect(screen.queryByTestId("timeline-data")).not.toBeInTheDocument(); }); });