dates.test.mjs
Language JavaScript1.3 KB33 lines
// Unit tests for lib/dates.ts. Run after `npm run build` (npm test does both).import { test } from "node:test";import assert from "node:assert/strict";import { toRequestDate } from "../dist/lib/dates.js";test("an ISO date becomes yyyymmdd with no separators", () => {assert.equal(toRequestDate("2026-03-07"), "20260307");assert.equal(toRequestDate("2026-12-31"), "20261231");});test("a Date is formatted from its UTC fields", () => {assert.equal(toRequestDate(new Date(Date.UTC(2026, 0, 5))), "20260105");// 23:30 in UTC-5 on 5 January is already 6 January in UTC.assert.equal(toRequestDate(new Date("2026-01-05T23:30:00-05:00")), "20260106");});test("input already in the request format is rejected, not passed through", () => {assert.throws(() => toRequestDate("20260307"), RangeError);});test("malformed strings throw a RangeError naming the expected format", () => {for (const input of ["", "07/03/2026", "2026-13-01", "yesterday"]) {assert.throws(() => toRequestDate(input),(err) => err instanceof RangeError && err.message === `Invalid date: ${input} (expected YYYY-MM-DD)`,`input ${JSON.stringify(input)}`,);}});test("an invalid Date throws a RangeError", () => {assert.throws(() => toRequestDate(new Date(Number.NaN)), RangeError);});