const { describe, it } = require("node:test"); const assert = require("node:assert"); const { transformLiveUsageData } = require("../src/llm-usage"); describe("llm-usage module", () => { describe("transformLiveUsageData()", () => { it("transforms valid usage data with anthropic provider", () => { const usage = { providers: [ { provider: "anthropic", windows: [ { label: "5h", usedPercent: 25, resetAt: Date.now() + 3600000 }, { label: "Week", usedPercent: 10, resetAt: Date.now() + 86400000 * 3 }, { label: "Sonnet", usedPercent: 5, resetAt: Date.now() + 86400000 * 5 }, ], }, ], }; const result = transformLiveUsageData(usage); assert.strictEqual(result.source, "live"); assert.strictEqual(result.claude.session.usedPct, 25); assert.strictEqual(result.claude.session.remainingPct, 75); assert.strictEqual(result.claude.weekly.usedPct, 10); assert.strictEqual(result.claude.sonnet.usedPct, 5); }); it("handles auth error from provider", () => { const usage = { providers: [{ provider: "anthropic", error: "403 Forbidden" }], }; const result = transformLiveUsageData(usage); assert.strictEqual(result.source, "error"); assert.strictEqual(result.errorType, "auth"); assert.ok(result.error.includes("403")); assert.strictEqual(result.claude.session.usedPct, null); }); it("handles missing windows gracefully", () => { const usage = { providers: [{ provider: "anthropic", windows: [] }] }; const result = transformLiveUsageData(usage); assert.strictEqual(result.source, "live"); assert.strictEqual(result.claude.session.usedPct, 0); assert.strictEqual(result.claude.weekly.usedPct, 0); }); it("handles codex provider data", () => { const usage = { providers: [ { provider: "anthropic", windows: [] }, { provider: "openai-codex", windows: [ { label: "5h", usedPercent: 30 }, { label: "Day", usedPercent: 15 }, ], }, ], }; const result = transformLiveUsageData(usage); assert.strictEqual(result.codex.usage5hPct, 30); assert.strictEqual(result.codex.usageDayPct, 15); }); it("handles missing providers gracefully", () => { const usage = { providers: [] }; const result = transformLiveUsageData(usage); assert.strictEqual(result.source, "live"); assert.strictEqual(result.codex.usage5hPct, 0); }); it("formats reset time correctly", () => { const usage = { providers: [ { provider: "anthropic", windows: [{ label: "5h", usedPercent: 50, resetAt: Date.now() + 30 * 60000 }], }, ], }; const result = transformLiveUsageData(usage); assert.ok(result.claude.session.resetsIn.includes("m")); }); }); });