import assert from "node:assert/strict"; import { describe, it } from "node:test"; import { mergeWidgetCode, parseMixedWidgetCode } from "./widgetCode.ts"; describe("parseMixedWidgetCode", () => { it("拆分混写的 style/script 段", () => { const r = parseMixedWidgetCode( `
hi
\n\n` ); assert.equal(r.html, `
hi
`); assert.equal(r.css, `.a { color: red; }`); assert.equal(r.js, `console.log(1);`); }); it("多段 style/script 按序拼接", () => { const r = parseMixedWidgetCode(`

x

`); assert.equal(r.css, ".a{}\n\n.b{}"); assert.equal(r.js, "a();\n\nb();"); assert.equal(r.html, "

x

"); }); it("纯 HTML 不误伤", () => { const r = parseMixedWidgetCode(`

hello

`); assert.deepEqual(r, { html: "

hello

", css: "", js: "" }); }); it("外链与非 JS type 的 script 留在 html", () => { const code = ``; const r = parseMixedWidgetCode(code); assert.equal(r.js, "z();"); assert.equal( r.html, `` ); }); }); describe("mergeWidgetCode", () => { it("合并后再解析可还原三字段", () => { const parts = { html: "go", css: "b { font-size: 18px; }", js: "x();" }; assert.deepEqual(parseMixedWidgetCode(mergeWidgetCode(parts)), parts); }); it("空段不产生标签", () => { assert.equal(mergeWidgetCode({ html: "hi", css: "", js: "" }), "hi"); }); });