Initial commit with translated description
This commit is contained in:
88
tests/llm-usage.test.js
Normal file
88
tests/llm-usage.test.js
Normal file
@@ -0,0 +1,88 @@
|
||||
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"));
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user