"use strict"; const assert = require("assert"); const fs = require("fs"); const path = require("path"); const run = async () => { const source = fs.readFileSync(path.join(__dirname, "../data/mock.js"), "utf8"); const contractSource = fs.readFileSync( path.join(__dirname, "../utils/genealogy-contracts.js"), "utf8", ); const contractUrl = `data:text/javascript;base64,${Buffer.from(contractSource).toString("base64")}`; const moduleUrl = `data:text/javascript;base64,${Buffer.from(source.replace("../utils/genealogy-contracts.js", contractUrl)).toString("base64")}`; const { findNotificationFixture, listNotificationFixtures, notifications, } = await import(moduleUrl); assert.deepStrictEqual( notifications.map((notice) => notice.id), ["review-1", "approved"], "notification owner must use one lexical identity for list and detail", ); for (const notice of notifications) { assert.strictEqual(typeof notice.id, "string"); assert.strictEqual(typeof notice.unread, "boolean"); assert.strictEqual(Object.prototype.hasOwnProperty.call(notice, "read"), false); assert.strictEqual(typeof notice.targetType, "string"); assert.strictEqual(typeof notice.targetParams?.genealogyId, "string"); assert.strictEqual(Object.prototype.hasOwnProperty.call(notice, "target"), false); assert.strictEqual(Object.prototype.hasOwnProperty.call(notice, "detailId"), false); } assert.strictEqual(findNotificationFixture("missing"), null); assert.strictEqual(findNotificationFixture("__proto__"), null); const listSnapshot = listNotificationFixtures(); listSnapshot[0].title = "changed"; listSnapshot[0].targetParams.genealogyId = "changed"; assert.notStrictEqual(findNotificationFixture("review-1").title, "changed"); assert.notStrictEqual( findNotificationFixture("review-1").targetParams.genealogyId, "changed", ); process.stdout.write("NOTIFICATION-FIXTURE-RUNTIME-SMOKE PASS\n"); }; run().catch((error) => { process.stderr.write(`${error.stack || error.message}\n`); process.exit(1); });