56 lines
1.8 KiB
JavaScript
56 lines
1.8 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { readFile } from "node:fs/promises";
|
|
|
|
const source = await readFile(new URL("../js/mce_image_source.js", import.meta.url), "utf8");
|
|
const moduleUrl = `data:text/javascript;base64,${Buffer.from(source).toString("base64")}`;
|
|
const { parseImageWidgetValue, resolveConnectedImageSource } = await import(moduleUrl);
|
|
|
|
assert.deepEqual(parseImageWidgetValue("portrait.png"), {
|
|
filename: "portrait.png",
|
|
subfolder: "",
|
|
type: "input",
|
|
});
|
|
assert.deepEqual(parseImageWidgetValue("people/portrait.webp [output]"), {
|
|
filename: "portrait.webp",
|
|
subfolder: "people",
|
|
type: "output",
|
|
});
|
|
assert.equal(parseImageWidgetValue("model.safetensors"), null);
|
|
|
|
const loadImage = {
|
|
id: 1,
|
|
type: "LoadImage",
|
|
comfyClass: "LoadImage",
|
|
widgets: [{ name: "image", value: "shots/source.jpg" }],
|
|
};
|
|
const editor = {
|
|
inputs: [{ name: "image", link: 10 }],
|
|
graph: {
|
|
links: { 10: { origin_id: 1 } },
|
|
getNodeById: (id) => id === 1 ? loadImage : null,
|
|
},
|
|
};
|
|
assert.deepEqual(resolveConnectedImageSource(editor), {
|
|
imageRef: { filename: "source.jpg", subfolder: "shots", type: "input" },
|
|
sourceNode: loadImage,
|
|
});
|
|
|
|
const reroute = { id: 3, type: "Reroute", widgets: [], inputs: [{ name: "", link: 11 }] };
|
|
editor.graph.links = {
|
|
10: { origin_id: 3 },
|
|
11: { origin_id: 1 },
|
|
};
|
|
editor.graph.getNodeById = (id) => ({ 1: loadImage, 3: reroute })[id] || null;
|
|
assert.deepEqual(resolveConnectedImageSource(editor)?.imageRef, {
|
|
filename: "source.jpg",
|
|
subfolder: "shots",
|
|
type: "input",
|
|
});
|
|
|
|
const generatedNode = { id: 2, type: "VAEDecode", widgets: [] };
|
|
editor.graph.links = { 10: { origin_id: 2 } };
|
|
editor.graph.getNodeById = (id) => id === 2 ? generatedNode : null;
|
|
assert.equal(resolveConnectedImageSource(editor), null);
|
|
|
|
console.log("connected image source resolution: OK");
|