54 lines
2.0 KiB
JavaScript
54 lines
2.0 KiB
JavaScript
"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);
|
|
});
|