From 30dbd1a59884743e4a17e65783644ed802e03525 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 13 Mar 2026 18:52:43 +0000 Subject: [PATCH] test: tighten shared usage helper coverage --- src/infra/provider-usage.shared.test.ts | 32 +++++++++++++++++-------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/infra/provider-usage.shared.test.ts b/src/infra/provider-usage.shared.test.ts index 3de021235be..578cb876a4f 100644 --- a/src/infra/provider-usage.shared.test.ts +++ b/src/infra/provider-usage.shared.test.ts @@ -2,24 +2,36 @@ import { describe, expect, it } from "vitest"; import { clampPercent, resolveUsageProviderId, withTimeout } from "./provider-usage.shared.js"; describe("provider-usage.shared", () => { - it("normalizes supported usage provider ids", () => { - expect(resolveUsageProviderId("z-ai")).toBe("zai"); - expect(resolveUsageProviderId(" GOOGLE-GEMINI-CLI ")).toBe("google-gemini-cli"); - expect(resolveUsageProviderId("unknown-provider")).toBeUndefined(); - expect(resolveUsageProviderId()).toBeUndefined(); + it.each([ + { value: "z-ai", expected: "zai" }, + { value: " GOOGLE-GEMINI-CLI ", expected: "google-gemini-cli" }, + { value: "unknown-provider", expected: undefined }, + { value: undefined, expected: undefined }, + { value: null, expected: undefined }, + ])("normalizes provider ids for %j", ({ value, expected }) => { + expect(resolveUsageProviderId(value)).toBe(expected); }); - it("clamps usage percents and handles non-finite values", () => { - expect(clampPercent(-5)).toBe(0); - expect(clampPercent(120)).toBe(100); - expect(clampPercent(Number.NaN)).toBe(0); - expect(clampPercent(Number.POSITIVE_INFINITY)).toBe(0); + it.each([ + { value: -5, expected: 0 }, + { value: 42, expected: 42 }, + { value: 120, expected: 100 }, + { value: Number.NaN, expected: 0 }, + { value: Number.POSITIVE_INFINITY, expected: 0 }, + ])("clamps usage percents for %j", ({ value, expected }) => { + expect(clampPercent(value)).toBe(expected); }); it("returns work result when it resolves before timeout", async () => { await expect(withTimeout(Promise.resolve("ok"), 100, "fallback")).resolves.toBe("ok"); }); + it("propagates work errors before timeout", async () => { + await expect(withTimeout(Promise.reject(new Error("boom")), 100, "fallback")).rejects.toThrow( + "boom", + ); + }); + it("returns fallback when timeout wins", async () => { const late = new Promise((resolve) => setTimeout(() => resolve("late"), 50)); await expect(withTimeout(late, 1, "fallback")).resolves.toBe("fallback");