89 lines
3.0 KiB
JavaScript
89 lines
3.0 KiB
JavaScript
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"));
|
|
});
|
|
});
|
|
});
|