Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
1.7 kB ยท 58 lines
TypeScript
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859import { expect } from "@std/expect";import { describe, it } from "@std/testing/bdd";
import { calculateDuration, formatDuration } from "./duration";
describe("formatDuration", () => { it("formats short durations (seconds only)", () => { expect(formatDuration(30000)).toBe("30s"); });
it("formats medium durations (minutes and seconds)", () => { expect(formatDuration(135000)).toBe("2m 15s"); });
it("formats long durations (hours, minutes, seconds)", () => { expect(formatDuration(8130000)).toBe("2h 15m 30s"); });
it("formats very long durations (days and hours)", () => { expect(formatDuration(90000000)).toBe("1d 1h"); });
it("handles 0ms", () => { expect(formatDuration(0)).toBe("0s"); });
it("handles negative values", () => { expect(formatDuration(-1000)).toBe("0s"); });
it("handles sub-second durations", () => { expect(formatDuration(500)).toBe("0s"); });
it("respects maxUnits option", () => { expect(formatDuration(90061000, { maxUnits: 2 })).toBe("1d 1h"); expect(formatDuration(90061000, { maxUnits: 1 })).toBe("1d"); });
it("only shows non-zero units", () => { expect(formatDuration(3600000)).toBe("1h"); expect(formatDuration(60000)).toBe("1m"); expect(formatDuration(86400000)).toBe("1d"); });});
describe("calculateDuration", () => { it("calculates duration between two dates", () => { const start = new Date("2026-01-22T10:00:00Z"); const end = new Date("2026-01-22T12:15:30Z"); expect(calculateDuration(start, end)).toBe(8130000); });
it("handles same start and end", () => { const date = new Date("2026-01-22T10:00:00Z"); expect(calculateDuration(date, date)).toBe(0); });});