import { describe, expect, it } from "vite-plus/test"; import { applyUsageLimitsUpdate, resolveUsageLimitsAfterProbe } from "./providerUsageLimits.ts"; const checkedAt = "2026-09-03T12:00:00.000Z";const session = { id: "five_hour", kind: "session", label: "Session", usedPercent: 40, windowDurationMins: 300, resetsAt: "2026-09-03T14:00:00.000Z",} as const;const weekly = { id: "seven_day", kind: "weekly", label: "Weekly", usedPercent: 20, windowDurationMins: 10_080,} as const;const published = { checkedAt, windows: [session, weekly] }; describe("applyUsageLimitsUpdate", () => { it("returns the published object itself when no window moved", () => { // Codex repeats the same numbers beside every token-usage tick; the // ingestion path relies on identity to skip the publish. const next = applyUsageLimitsUpdate({ previous: published, checkedAt: "2026-09-03T12:00:05.000Z", update: { windows: [ { ...weekly }, { id: "five_hour", kind: "session", label: "Session", usedPercent: 40 }, ], }, }); expect(next).toBe(published); }); it("upserts by id and keeps the reset a percent-only update omits", () => { const next = applyUsageLimitsUpdate({ previous: published, checkedAt: "2026-09-03T12:00:05.000Z", update: { windows: [{ id: "five_hour", kind: "session", label: "Session", usedPercent: 55 }], }, }); expect(next).not.toBe(published); expect(next).toEqual({ checkedAt: "2026-09-03T12:00:05.000Z", windows: [{ ...session, usedPercent: 55 }, weekly], }); }); it("leaves an unsupported account and an empty update alone", () => { const unsupported = { checkedAt, windows: [], unavailable: { reason: "unsupported" as const } }; expect( applyUsageLimitsUpdate({ previous: unsupported, checkedAt, update: { windows: [session] } }), ).toBe(unsupported); expect( applyUsageLimitsUpdate({ previous: published, checkedAt, update: { windows: [] } }), ).toBe(published); }); it("preserves reset credits when a streamed window update changes usage", () => { const resetCredits = { availableCount: 2, nextExpiresAt: "2026-10-01T00:00:00.000Z" }; const next = applyUsageLimitsUpdate({ previous: { ...published, resetCredits }, checkedAt: "2026-09-03T12:00:05.000Z", update: { windows: [{ ...session, usedPercent: 55 }] }, }); expect(next).toEqual({ checkedAt: "2026-09-03T12:00:05.000Z", windows: [{ ...session, usedPercent: 55 }, weekly], resetCredits, }); });}); describe("resolveUsageLimitsAfterProbe", () => { it("keeps the last good windows through a failed probe but not an unsupported one", () => { const failed = { checkedAt, windows: [], unavailable: { reason: "probeFailed" as const } }; const unsupported = { checkedAt, windows: [], unavailable: { reason: "unsupported" as const } }; expect(resolveUsageLimitsAfterProbe({ published, probed: failed })).toBe(published); expect(resolveUsageLimitsAfterProbe({ published, probed: unsupported })).toBe(unsupported); expect(resolveUsageLimitsAfterProbe({ published: undefined, probed: failed })).toBe(failed); });});
import { describe, expect, it } from "vite-plus/test";
import { applyUsageLimitsUpdate, resolveUsageLimitsAfterProbe } from "./providerUsageLimits.ts";
const checkedAt = "2026-09-03T12:00:00.000Z";
const session = {
id: "five_hour",
kind: "session",
label: "Session",
usedPercent: 40,
windowDurationMins: 300,
resetsAt: "2026-09-03T14:00:00.000Z",
} as const;
const weekly = {
id: "seven_day",
kind: "weekly",
label: "Weekly",
usedPercent: 20,
windowDurationMins: 10_080,
} as const;
const published = { checkedAt, windows: [session, weekly] };
describe("applyUsageLimitsUpdate", () => {
it("returns the published object itself when no window moved", () => {
// Codex repeats the same numbers beside every token-usage tick; the
// ingestion path relies on identity to skip the publish.
const next = applyUsageLimitsUpdate({
previous: published,
checkedAt: "2026-09-03T12:00:05.000Z",
update: {
windows: [
{ ...weekly },
{ id: "five_hour", kind: "session", label: "Session", usedPercent: 40 },
],
},
});
expect(next).toBe(published);
});
it("upserts by id and keeps the reset a percent-only update omits", () => {
const next = applyUsageLimitsUpdate({
previous: published,
checkedAt: "2026-09-03T12:00:05.000Z",
update: {
windows: [{ id: "five_hour", kind: "session", label: "Session", usedPercent: 55 }],
},
});
expect(next).not.toBe(published);
expect(next).toEqual({
checkedAt: "2026-09-03T12:00:05.000Z",
windows: [{ ...session, usedPercent: 55 }, weekly],
});
});
it("leaves an unsupported account and an empty update alone", () => {
const unsupported = { checkedAt, windows: [], unavailable: { reason: "unsupported" as const } };
expect(
applyUsageLimitsUpdate({ previous: unsupported, checkedAt, update: { windows: [session] } }),
).toBe(unsupported);
expect(
applyUsageLimitsUpdate({ previous: published, checkedAt, update: { windows: [] } }),
).toBe(published);
});
it("preserves reset credits when a streamed window update changes usage", () => {
const resetCredits = { availableCount: 2, nextExpiresAt: "2026-10-01T00:00:00.000Z" };
const next = applyUsageLimitsUpdate({
previous: { ...published, resetCredits },
checkedAt: "2026-09-03T12:00:05.000Z",
update: { windows: [{ ...session, usedPercent: 55 }] },
});
expect(next).toEqual({
checkedAt: "2026-09-03T12:00:05.000Z",
windows: [{ ...session, usedPercent: 55 }, weekly],
resetCredits,
});
});
});
describe("resolveUsageLimitsAfterProbe", () => {
it("keeps the last good windows through a failed probe but not an unsupported one", () => {
const failed = { checkedAt, windows: [], unavailable: { reason: "probeFailed" as const } };
const unsupported = { checkedAt, windows: [], unavailable: { reason: "unsupported" as const } };
expect(resolveUsageLimitsAfterProbe({ published, probed: failed })).toBe(published);
expect(resolveUsageLimitsAfterProbe({ published, probed: unsupported })).toBe(unsupported);
expect(resolveUsageLimitsAfterProbe({ published: undefined, probed: failed })).toBe(failed);
});
});