// Hybrid-Chain offline teaching model: event-access-and-nft-ticketing // 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 event-access-and-nft-ticketing.mjs import test from 'node:test'; import assert from 'node:assert/strict'; export function inspect(record) { if (!record.eventMatches) return 'WRONG_EVENT'; if (!record.ownerVerified) return 'OWNERSHIP_REVIEW_REQUIRED'; if (record.alreadyRedeemed) return 'ALREADY_ADMITTED'; return 'READY_FOR_ADMISSION_SERVICE_CHECK'; } const baseline = { "eventMatches": true, "ownerVerified": true, "alreadyRedeemed": false }; const cases = [ { "name": "eligible for separate atomic check", "patch": {}, "expected": "READY_FOR_ADMISSION_SERVICE_CHECK" }, { "name": "another event", "patch": { "eventMatches": false }, "expected": "WRONG_EVENT" }, { "name": "ownership unresolved", "patch": { "ownerVerified": false }, "expected": "OWNERSHIP_REVIEW_REQUIRED" }, { "name": "already used ticket", "patch": { "alreadyRedeemed": true }, "expected": "ALREADY_ADMITTED" } ]; for (const example of cases) { test(example.name, () => { assert.equal(inspect({...baseline, ...example.patch}), example.expected); }); }