89 lines · 3.2 KB · TypeScript
RawDownload
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);  });});