const test = require("node:test"); const assert = require("node:assert/strict"); const { collectUpstreamOutputs } = require("../renderer/canvas-inputs.js"); function nodeWithConnections(connections) { return { inputs: { input_1: { connections } } }; } test("collects text from a connected text node for image prompts", () => { const result = collectUpstreamOutputs( nodeWithConnections([{ node: 1 }]), () => ({ text: "a cinematic desk lamp", image: "" }) ); assert.equal(result.text, "a cinematic desk lamp"); assert.deepEqual(result.images, []); }); test("exposes the first connected image for first-frame video", () => { const result = collectUpstreamOutputs( nodeWithConnections([{ node: 1 }]), () => ({ image: "data:image/png;base64,first" }) ); assert.equal(result.image, "data:image/png;base64,first"); assert.deepEqual(result.images, ["data:image/png;base64,first"]); }); test("keeps every connected image in connection order and removes duplicates", () => { const outputs = { 1: { image: "data:image/png;base64,one" }, 2: { image: "data:image/png;base64,two" }, 3: { image: "data:image/png;base64,one" }, 4: { image: " " }, }; const result = collectUpstreamOutputs( nodeWithConnections([{ node: 1 }, { node: 2 }, { node: 3 }, { node: 4 }]), (id) => outputs[id] ); assert.equal(result.image, "data:image/png;base64,one"); assert.deepEqual(result.images, [ "data:image/png;base64,one", "data:image/png;base64,two", ]); });