From 2627ac1eb0c2799e94c8a06ab49498016404d15f Mon Sep 17 00:00:00 2001 From: Sindhu Gudala Date: Thu, 29 Jan 2026 13:49:41 -0500 Subject: [PATCH] test(cli): add missing test cases for parseDurationMs Add test coverage for error handling and edge cases: - Empty string validation - Invalid format handling - Negative value rejection - Custom defaultUnit option These tests document expected behavior without changing production code. --- src/cli/parse-duration.test.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/cli/parse-duration.test.ts b/src/cli/parse-duration.test.ts index c26bcc114..0c14ac494 100644 --- a/src/cli/parse-duration.test.ts +++ b/src/cli/parse-duration.test.ts @@ -26,4 +26,28 @@ describe("parseDurationMs", () => { it("supports decimals", () => { expect(parseDurationMs("0.5s")).toBe(500); }); + + it("throws on empty string", () => { + expect(() => parseDurationMs("")).toThrow("invalid duration (empty)"); + expect(() => parseDurationMs(" ")).toThrow("invalid duration (empty)"); + }); + + it("throws on invalid format", () => { + expect(() => parseDurationMs("abc")).toThrow("invalid duration: abc"); + expect(() => parseDurationMs("10x")).toThrow("invalid duration: 10x"); + expect(() => parseDurationMs("not-a-number")).toThrow("invalid duration: not-a-number"); + }); + + it("throws on negative values", () => { + expect(() => parseDurationMs("-5")).toThrow("invalid duration: -5"); + expect(() => parseDurationMs("-10s")).toThrow("invalid duration: -10s"); + }); + + it("respects custom defaultUnit option", () => { + expect(parseDurationMs("10", { defaultUnit: "s" })).toBe(10_000); + expect(parseDurationMs("5", { defaultUnit: "m" })).toBe(300_000); + expect(parseDurationMs("2", { defaultUnit: "h" })).toBe(7_200_000); + expect(parseDurationMs("1", { defaultUnit: "d" })).toBe(86_400_000); + expect(parseDurationMs("100", { defaultUnit: "ms" })).toBe(100); + }); });