import { assertEquals } from "jsr:@std/assert@1"; import { commitDate, timeAgo } from "./util.ts"; const now = new Date("2026-10-05T12:00:00Z"); const before = (seconds: number) => new Date(now.getTime() - seconds * 1000); Deno.test("timeAgo picks the largest whole unit", () => { assertEquals(timeAgo(before(47 * 60 + 59), now), "47 minutes ago"); assertEquals(timeAgo(before(3 * 86400 + 3600), now), "3 days ago"); assertEquals(timeAgo(before(86400), now), "yesterday"); assertEquals(timeAgo(before(13 * 86400), now), "last week"); assertEquals(timeAgo(before(400 * 86400), now), "last year"); }); Deno.test("timeAgo reads the future as now", () => { assertEquals(timeAgo(before(0), now), "now"); assertEquals(timeAgo(before(-90), now), "now"); }); Deno.test("commitDate is relative only while recent", () => { const id = (date: Date) => ({ time: date.getTime() / 1000, tz: "+0000" }); assertEquals(commitDate(id(before(3 * 86400)), now), "3 days ago"); assertEquals(commitDate(id(before(29 * 86400)), now), "4 weeks ago"); assertEquals(commitDate(id(before(30 * 86400)), now), "2026-09-05"); assertEquals(commitDate(id(before(400 * 86400)), now), "2025-08-31"); });