Files
2026-07-13 13:39:12 +08:00

95 lines
2.8 KiB
TypeScript

import { test } from "node:test";
import assert from "node:assert/strict";
import { getKnownPlan, knownProviders } from "../../src/lib/quota/planRegistry";
test("getKnownPlan('codex') returns non-null with 2 dimensions", () => {
const p = getKnownPlan("codex");
assert.notEqual(p, null);
assert.equal(p?.provider, "codex");
assert.equal(p?.dimensions.length, 2);
});
test("getKnownPlan('codex') first dimension is percent/5h/100", () => {
const p = getKnownPlan("codex");
assert.deepEqual(p?.dimensions[0], { unit: "percent", window: "5h", limit: 100 });
});
test("getKnownPlan('codex') second dimension is percent/weekly/100", () => {
const p = getKnownPlan("codex");
assert.deepEqual(p?.dimensions[1], { unit: "percent", window: "weekly", limit: 100 });
});
test("getKnownPlan('glm') has 2 dimensions, tokens unit", () => {
const p = getKnownPlan("glm");
assert.equal(p?.dimensions.length, 2);
for (const d of p?.dimensions ?? []) {
assert.equal(d.unit, "tokens");
}
});
test("getKnownPlan('minimax') has 2 dimensions", () => {
const p = getKnownPlan("minimax");
assert.equal(p?.dimensions.length, 2);
});
test("getKnownPlan('bailian') has 3 dimensions (5h/weekly/monthly)", () => {
const p = getKnownPlan("bailian");
assert.equal(p?.dimensions.length, 3);
const ws = p?.dimensions.map((d) => d.window);
assert.ok(ws?.includes("5h"));
assert.ok(ws?.includes("weekly"));
assert.ok(ws?.includes("monthly"));
});
test("getKnownPlan('kimi') has 1 dimension: requests/hourly/1500", () => {
const p = getKnownPlan("kimi");
assert.deepEqual(p?.dimensions, [{ unit: "requests", window: "hourly", limit: 1500 }]);
});
test("getKnownPlan('alibaba') has 1 dimension: requests/monthly/90000", () => {
const p = getKnownPlan("alibaba");
assert.deepEqual(p?.dimensions, [{ unit: "requests", window: "monthly", limit: 90_000 }]);
});
test("getKnownPlan('unknown') returns null", () => {
assert.equal(getKnownPlan("unknown"), null);
});
test("getKnownPlan('openai') returns null (manual obrigatório)", () => {
assert.equal(getKnownPlan("openai"), null);
});
test("getKnownPlan('') returns null", () => {
assert.equal(getKnownPlan(""), null);
});
test("knownProviders() returns exactly 11 entries", () => {
assert.equal(knownProviders().length, 11);
});
test("knownProviders() includes the full registry set", () => {
const list = knownProviders() as readonly string[];
for (const p of [
"codex",
"claude",
"glm",
"minimax",
"deepseek",
"bailian",
"kimi",
"kimi-coding",
"xiaomi-mimo",
"alibaba",
"grok-cli",
]) {
assert.ok(list.includes(p), `missing ${p}`);
}
});
test("every provider in knownProviders has a non-null plan", () => {
for (const provider of knownProviders()) {
assert.notEqual(getKnownPlan(provider), null, `getKnownPlan('${provider}') null`);
}
});