Files
diegosouzapw--omniroute/tests/unit/codex-usage-quotas-review-window.test.ts
2026-07-13 13:39:12 +08:00

110 lines
3.9 KiB
TypeScript

/**
* Regression test for Codex review-quota plumbing.
*
* Upstream parity: decolua/9router PR #836 surfaces the SECONDARY window of
* `code_review_rate_limit` and supports descriptors that arrive via the
* `additional_rate_limits` array (some ChatGPT plans report the review limit
* there rather than in the dedicated `code_review_rate_limit` block).
*
* Before this fix:
* - `buildCodexUsageQuotas` only emitted `quotas.code_review` from the
* primary window of `code_review_rate_limit`, so the WEEKLY review window
* was invisible to the dashboard.
* - Review limits surfaced under `additional_rate_limits` (with
* `limit_name`/`metered_feature` containing "review") were dropped.
*
* After this fix:
* - The secondary window of `code_review_rate_limit` is emitted as
* `quotas.code_review_weekly` (parallel to `session`/`weekly`).
* - Review entries inside `additional_rate_limits` populate the same
* `code_review`/`code_review_weekly` keys when the dedicated block is
* absent.
* - The primary `code_review` key is preserved (backward-compat for the
* existing dashboard rendering & the usage-service-hardening regression).
*/
import test from "node:test";
import assert from "node:assert/strict";
import { buildCodexUsageQuotas } from "../../open-sse/services/codexUsageQuotas.ts";
test("buildCodexUsageQuotas surfaces the secondary code_review window", () => {
const { quotas } = buildCodexUsageQuotas({
rate_limit: {
primary_window: { used_percent: 25 },
secondary_window: { used_percent: 50 },
},
code_review_rate_limit: {
primary_window: { used_percent: 40, reset_after_seconds: 45 },
secondary_window: { used_percent: 70, reset_after_seconds: 6000 },
},
});
// Pre-existing primary window stays under `code_review` (back-compat).
assert.equal(quotas.code_review?.used, 40);
assert.equal(quotas.code_review?.remaining, 60);
// New: secondary window exposed as `code_review_weekly`.
assert.equal(quotas.code_review_weekly?.used, 70);
assert.equal(quotas.code_review_weekly?.remaining, 30);
assert.equal(quotas.code_review_weekly?.total, 100);
assert.equal(quotas.code_review_weekly?.unlimited, false);
});
test("buildCodexUsageQuotas reads review windows from additional_rate_limits", () => {
const { quotas } = buildCodexUsageQuotas({
rate_limit: {
primary_window: { used_percent: 10 },
},
additional_rate_limits: [
{
limit_name: "Code Review",
metered_feature: "code_review",
rate_limit: {
primary_window: { used_percent: 33 },
secondary_window: { used_percent: 55 },
},
},
],
});
assert.equal(quotas.code_review?.used, 33);
assert.equal(quotas.code_review?.remaining, 67);
assert.equal(quotas.code_review_weekly?.used, 55);
assert.equal(quotas.code_review_weekly?.remaining, 45);
});
test("buildCodexUsageQuotas leaves review windows undefined when payload is silent", () => {
const { quotas } = buildCodexUsageQuotas({
rate_limit: {
primary_window: { used_percent: 10 },
secondary_window: { used_percent: 20 },
},
});
assert.equal(quotas.session?.used, 10);
assert.equal(quotas.weekly?.used, 20);
assert.equal(quotas.code_review, undefined);
assert.equal(quotas.code_review_weekly, undefined);
});
test("buildCodexUsageQuotas prefers dedicated block over additional_rate_limits fallback", () => {
const { quotas } = buildCodexUsageQuotas({
code_review_rate_limit: {
primary_window: { used_percent: 11 },
secondary_window: { used_percent: 22 },
},
additional_rate_limits: [
{
limit_name: "review",
rate_limit: {
primary_window: { used_percent: 99 },
secondary_window: { used_percent: 99 },
},
},
],
});
assert.equal(quotas.code_review?.used, 11);
assert.equal(quotas.code_review_weekly?.used, 22);
});