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.
2.4 kB ยท 72 lines
TypeScript
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273import { describe, expect, test } from "vitest";
import { formatDateTime, formatDateTimeRange, formatDay, formatElapsed, formatLongDay, formatShortDay, plural,} from "../emails/_components/format";
describe("email date formatting", () => { test("timestamps carry an explicit UTC suffix", () => { expect(formatDateTime("2026-09-18T12:37:00Z")).toBe("18 Sep, 12:37 UTC"); expect(formatDateTime(new Date("2026-10-13T00:05:00Z"))).toBe( "13 Oct, 00:05 UTC", ); });
test("timestamps are rendered in UTC regardless of the offset given", () => { expect(formatDateTime("2026-09-18T23:30:00-02:00")).toBe( "19 Sep, 01:30 UTC", ); });
test("day-only dates drop the suffix", () => { expect(formatDay("2026-09-25T00:00:00Z")).toBe("Fri 25 Sep 2026"); expect(formatDay("2026-09-25T00:00:00Z")).not.toContain("UTC"); expect(formatLongDay("2026-09-25T00:00:00Z")).toBe("Friday 25 September"); expect(formatShortDay("2026-09-25T00:00:00Z")).toBe("25 Sep"); });
test("unparseable input is returned as-is", () => { expect(formatDateTime("Mon - Tue")).toBe("Mon - Tue"); expect(formatDay("soon")).toBe("soon"); expect(formatDateTimeRange("soon", "later")).toBe("soon - later"); });
test("ranges repeat the day only when it changes", () => { expect( formatDateTimeRange("2026-10-12T22:00:00Z", "2026-10-13T01:00:00Z"), ).toBe("12 Oct, 22:00 - 13 Oct, 01:00 UTC"); expect( formatDateTimeRange("2026-10-12T22:00:00Z", "2026-10-12T23:30:00Z"), ).toBe("12 Oct, 22:00 - 23:30 UTC"); // same calendar day in another year must still show the end date expect( formatDateTimeRange("2026-12-31T22:00:00Z", "2027-12-31T01:00:00Z"), ).toBe("31 Dec, 22:00 - 31 Dec, 01:00 UTC"); });
test("elapsed time", () => { expect(formatElapsed("2026-09-18T10:23:00Z", "2026-09-18T12:37:00Z")).toBe( "2h 14m", ); expect(formatElapsed("2026-09-18T10:23:00Z", "2026-09-18T10:50:00Z")).toBe( "27m", ); expect(formatElapsed("2026-09-18T10:00:00Z", "2026-09-20T13:00:00Z")).toBe( "2d 3h", ); expect(formatElapsed("2026-09-18T12:00:00Z", "2026-09-18T10:00:00Z")).toBe( "0m", ); });
test("plural", () => { expect(plural(1, "monitor")).toBe("1 monitor"); expect(plural(3, "monitor")).toBe("3 monitors"); });});