diff --git a/src/lib/utils.test.ts b/src/lib/utils.test.ts index 7da0215..25ffde7 100644 --- a/src/lib/utils.test.ts +++ b/src/lib/utils.test.ts @@ -13,6 +13,7 @@ import { coerceNonNegative, coerceFraction, coercePercentage, + coerceStatus, validateTeamSplits, generateIdempotencyKey, toCents, @@ -211,6 +212,36 @@ describe("coercePercentage", () => { }); }); +// ─── coerceStatus ───────────────────────────────────────────────────────── + +describe("coerceStatus", () => { + it("accepts all valid BountyStatus values", () => { + const statuses = [ + "open", "funded", "claimed", "in_review", + "merged", "paid", "refunded", "expired", + ] as const; + for (const s of statuses) { + expect(coerceStatus(s)).toBe(s); + } + }); + + it("falls back to 'open' for an unrecognized string", () => { + expect(coerceStatus("banana")).toBe("open"); + }); + + it("falls back to 'open' for null", () => { + expect(coerceStatus(null)).toBe("open"); + }); + + it("falls back to 'open' for undefined", () => { + expect(coerceStatus(undefined)).toBe("open"); + }); + + it("falls back to 'open' for empty string", () => { + expect(coerceStatus("")).toBe("open"); + }); +}); + // ─── validateTeamSplits ────────────────────────────────────────────────────── describe("validateTeamSplits", () => {