mattrguerra/meridian-orders-mcpmainPrivate on GitHub, published here in full

dates.test.mjs

Language JavaScript1.3 KB33 lines

mcp-server/test/dates.test.mjs

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