nanobot-voice-interface/scripts/check_card_runtime_fixture.mjs

58 lines
1.3 KiB
JavaScript
Raw Normal View History

import assert from "node:assert/strict";
import { mount } from "./card_runtime_fixture_card.mjs";
function createFakeRoot() {
return {
dataset: {},
innerHTML: "",
};
}
async function main() {
const root = createFakeRoot();
const liveContentCalls = [];
const refreshHandlers = [];
const host = {
setLiveContent(value) {
liveContentCalls.push(value);
},
setRefreshHandler(handler) {
refreshHandlers.push(handler);
},
};
const mounted = mount({
root,
state: { title: "alpha" },
host,
});
assert.equal(typeof mounted?.update, "function");
assert.equal(typeof mounted?.destroy, "function");
assert.match(root.innerHTML, /alpha/);
assert.deepEqual(liveContentCalls.at(-1), { phase: "mount", title: "alpha" });
assert.equal(typeof refreshHandlers.at(-1), "function");
refreshHandlers.at(-1)?.();
assert.equal(root.dataset.refreshed, "1");
mounted.update({
root,
state: { title: "beta" },
host,
});
assert.match(root.innerHTML, /beta/);
assert.deepEqual(liveContentCalls.at(-1), { phase: "update", title: "beta" });
mounted.destroy();
assert.equal(root.innerHTML, "");
assert.equal(root.dataset.destroyed, "1");
assert.equal(refreshHandlers.at(-1), null);
console.log("card runtime fixture ok");
}
await main();