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

orderNumber.test.mjs

Language JavaScript2.6 KB58 lines

mcp-server/test/orderNumber.test.mjs

  1. // Unit tests for lib/orderNumber.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 { resolveDisplayNumber } from "../dist/lib/orderNumber.js";
  5. const IN_2026 = new Date(Date.UTC(2026, 5, 15));
  6. test("current format: MD + two-digit year + order_ref resolves to the order_ref", () => {
  7. assert.deepEqual(resolveDisplayNumber("MD2639582", IN_2026), { action: "accept", orderId: 39582 });
  8. });
  9. test("current format: case and surrounding whitespace are ignored", () => {
  10. assert.deepEqual(resolveDisplayNumber(" md2639582 ", IN_2026), { action: "accept", orderId: 39582 });
  11. });
  12. test("current format: an earlier year is accepted", () => {
  13. assert.deepEqual(resolveDisplayNumber("MD2412345", IN_2026), { action: "accept", orderId: 12345 });
  14. });
  15. test("current format: leading zeros in the order_ref are dropped", () => {
  16. assert.deepEqual(resolveDisplayNumber("MD2600123", IN_2026), { action: "accept", orderId: 123 });
  17. });
  18. test("current format: a year later than now is accepted with a warning", () => {
  19. const result = resolveDisplayNumber("MD2739582", IN_2026);
  20. assert.equal(result.action, "warn");
  21. assert.equal(result.orderId, 39582);
  22. assert.match(result.note, /later than the current year/);
  23. });
  24. test("current format: the current year is taken in UTC", () => {
  25. const lastMinuteOf2026 = new Date(Date.UTC(2026, 11, 31, 23, 59));
  26. assert.equal(resolveDisplayNumber("MD2739582", lastMinuteOf2026).action, "warn");
  27. const firstMinuteOf2027 = new Date(Date.UTC(2027, 0, 1, 0, 1));
  28. assert.equal(resolveDisplayNumber("MD2739582", firstMinuteOf2027).action, "accept");
  29. });
  30. test("legacy format M- + six digits is refused and routed to a person", () => {
  31. const result = resolveDisplayNumber("M-123456", IN_2026);
  32. assert.equal(result.action, "refuse");
  33. assert.equal(result.orderId, undefined);
  34. assert.match(result.note, /Legacy number from before Plinth/);
  35. assert.match(result.note, /Route to a human/);
  36. });
  37. test("legacy format: case is ignored", () => {
  38. assert.equal(resolveDisplayNumber("m-123456", IN_2026).action, "refuse");
  39. assert.match(resolveDisplayNumber("m-123456", IN_2026).note, /Legacy/);
  40. });
  41. test("anything else is refused as unrecognized, quoting the input as given", () => {
  42. for (const input of ["39582", "M-12345", "M-1234567", "MD26", "XX2639582", ""]) {
  43. const result = resolveDisplayNumber(input, IN_2026);
  44. assert.equal(result.action, "refuse", `input ${JSON.stringify(input)}`);
  45. assert.equal(result.orderId, undefined, `input ${JSON.stringify(input)}`);
  46. assert.equal(result.note, `Unrecognized display-number format: ${input}`);
  47. }
  48. });