diff --git a/server/test/unit/utils/dataUtils.test.ts b/server/test/unit/utils/dataUtils.test.ts index f4893fe03..01f102cca 100644 --- a/server/test/unit/utils/dataUtils.test.ts +++ b/server/test/unit/utils/dataUtils.test.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from "@jest/globals"; -import { getDateForRange, NormalizeData, NormalizeDataUptimeDetails } from "../../../src/utils/dataUtils.ts"; +import { getDateForRange, getDateFormat, NormalizeData, NormalizeDataUptimeDetails } from "../../../src/utils/dataUtils.ts"; import type { GroupedCheck } from "../../../src/domain/checks/check.type.ts"; +import { DateRanges, type DateRange } from "../../../src/types/query.ts"; // ── Helpers ────────────────────────────────────────────────────────────────── @@ -29,20 +30,35 @@ describe("getDateForRange", () => { ["month", 30 * 24 * 60 * 60 * 1000], ])("returns now minus the %s window", (range, offsetMs) => { const before = Date.now(); - const result = getDateForRange(range as string); + const result = getDateForRange(range as DateRange); const after = Date.now(); expect(result).toBeInstanceOf(Date); - expect(result!.getTime()).toBeGreaterThanOrEqual(before - offsetMs); - expect(result!.getTime()).toBeLessThanOrEqual(after - offsetMs); + expect(result.getTime()).toBeGreaterThanOrEqual(before - offsetMs); + expect(result.getTime()).toBeLessThanOrEqual(after - offsetMs); }); - it("returns undefined for 'all'", () => { - expect(getDateForRange("all")).toBeUndefined(); + it("returns the epoch for 'all'", () => { + expect(getDateForRange("all")).toEqual(new Date(0)); + }); +}); + +describe("getDateFormat", () => { + it.each([ + ["recent", "%Y-%m-%dT%H:%M:00Z"], + ["hour", "%Y-%m-%dT%H:%M:00Z"], + ["day", "%Y-%m-%dT%H:00:00Z"], + ["week", "%Y-%m-%dT00:00:00Z"], + ["month", "%Y-%m-%dT00:00:00Z"], + ["all", "%Y-%m-%dT00:00:00Z"], + ])("returns the %s bucket format", (range, format) => { + expect(getDateFormat(range as DateRange)).toBe(format); }); - it("returns undefined for unknown ranges", () => { - expect(getDateForRange("fortnight")).toBeUndefined(); + it("has a format for every member of DateRanges", () => { + for (const range of DateRanges) { + expect(getDateFormat(range)).toMatch(/^%Y-%m-%d/); + } }); });