Files
moteva/frontend/tests/promptImageReferences.test.mjs
T

40 lines
1.6 KiB
JavaScript
Raw Normal View History

import assert from "node:assert/strict";
import test from "node:test";
import { parsePromptImageReferences } from "../src/ui/lib/promptImageReferences.ts";
test("parses CAD-derived SVG reference directives with nested parentheses", () => {
const url = "http://localhost:19000/canvas-assets/drawing.svg";
const parts = parsePromptImageReferences(`Reference image (06-5070 R3 2026-05-05(1) (DXF).svg): ${url}\nMake it pink`);
assert.deepEqual(parts, [
{
type: "reference",
reference: {
id: parts[0]?.type === "reference" ? parts[0].reference.id : "",
index: undefined,
name: "06-5070 R3 2026-05-05(1) (DXF).svg",
url
}
},
{ type: "text", text: "\nMake it pink" }
]);
});
test("keeps Chinese CAD reference directives on the attachment path", () => {
const url = "https://assets.example.com/plan.svg";
const parts = parsePromptImageReferences(`参考图 1(花语江南 (DWG).svg):${url}\n继续设计`);
assert.equal(parts[0]?.type, "reference");
assert.equal(parts[0]?.type === "reference" ? parts[0].reference.index : undefined, 1);
assert.equal(parts[0]?.type === "reference" ? parts[0].reference.name : "", "花语江南 (DWG).svg");
assert.equal(parts[0]?.type === "reference" ? parts[0].reference.url : "", url);
});
test("continues to parse raster reference directives", () => {
const parts = parsePromptImageReferences("Reference image 2 (sample.webp): https://assets.example.com/sample.webp");
assert.equal(parts[0]?.type, "reference");
assert.equal(parts[0]?.type === "reference" ? parts[0].reference.name : "", "sample.webp");
});