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.8 kB ยท 58 lines
TypeScript
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859import { expect } from "@std/expect";import { describe, test } from "@std/testing/bdd";
import { formatDateTime, 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"); });
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"); });});