// Hybrid-Chain offline teaching model: issuing-digital-claims-and-invoices // Fictional fields/states; NOT an API client, authorization system or production implementation. // No network calls, credentials, payments or file writes. Review before running. // Requires Node.js 22+. Run: node --test issuing-digital-claims-and-invoices.mjs import test from 'node:test'; import assert from 'node:assert/strict'; export function inspect(record) { if (record.disputed) return 'DISPUTED'; if (record.approvedVersion !== record.recordVersion) return 'VERSION_REVIEW_REQUIRED'; if (record.paidMinor < record.dueMinor) return 'PARTIAL_PAYMENT'; return 'PAYMENT_RECORDED_FOR_REVIEW'; } const baseline = { "dueMinor": 10000, "paidMinor": 10000, "disputed": false, "approvedVersion": "I2", "recordVersion": "I2" }; const cases = [ { "name": "payment recorded", "patch": {}, "expected": "PAYMENT_RECORDED_FOR_REVIEW" }, { "name": "partial receipt", "patch": { "paidMinor": 4000 }, "expected": "PARTIAL_PAYMENT" }, { "name": "disputed obligation", "patch": { "disputed": true }, "expected": "DISPUTED" }, { "name": "old invoice reference", "patch": { "recordVersion": "I1" }, "expected": "VERSION_REVIEW_REQUIRED" } ]; for (const example of cases) { test(example.name, () => { assert.equal(inspect({...baseline, ...example.patch}), example.expected); }); }