fix(web): 修復排版邊界與增量生命週期
This commit is contained in:
@@ -129,6 +129,58 @@ test("所有權:子根 render 後對祖先 revert 完整清理", () =>
|
||||
assert.equal(document.body.innerHTML, before);
|
||||
});
|
||||
|
||||
test("所有權:局部 revert 完整撤回祖根與獨立子根的混合產物", () =>
|
||||
{
|
||||
const { document } = setupDom('<main><section id="part">'
|
||||
+ '<p id="a">甲文,內容。</p><p id="b">乙文,內容。</p></section></main>');
|
||||
const main = document.querySelector("main");
|
||||
const part = document.getElementById("part");
|
||||
const a = document.getElementById("a");
|
||||
const b = document.getElementById("b");
|
||||
const before = part.innerHTML;
|
||||
const jz = createJuzhen({ jiya: { halfWidth: "margin" }, justifyAtoms: false });
|
||||
jz.render(main);
|
||||
jz.render(b);
|
||||
assert.ok(a.querySelector("jz-char"));
|
||||
assert.ok(b.querySelector("jz-char"));
|
||||
assert.equal(b.getAttribute("data-jz-halfwidth"), "margin");
|
||||
|
||||
jz.revert(part);
|
||||
assert.equal(part.innerHTML, before, "祖根寫入的兄弟產物與子根屬性皆撤回");
|
||||
assert.equal(main.getAttribute("data-jz-halfwidth"), "margin", "請求範圍外祖根屬性保留");
|
||||
jz.render(part);
|
||||
assert.ok(a.querySelector("jz-char"), "還原後可再次渲染");
|
||||
jz.revert(main);
|
||||
assert.equal(part.innerHTML, before);
|
||||
});
|
||||
|
||||
test("所有權:混合根局部 revert 保留作者與其他實例的產物", () =>
|
||||
{
|
||||
const { document } = setupDom('<main><section id="part">'
|
||||
+ '<p id="a" data-jz-block-level="author-level">甲文,內容。</p>'
|
||||
+ '<p id="b">乙文,內容。</p><p id="foreign">他文,內容。</p>'
|
||||
+ '<span data-jz-skip><jz-hws data-jz="spacing" data-jz-kind="wrap">作者</jz-hws></span>'
|
||||
+ '</section></main>');
|
||||
const part = document.getElementById("part");
|
||||
const foreign = document.getElementById("foreign");
|
||||
const peer = createJuzhen();
|
||||
peer.render(foreign);
|
||||
const before = part.innerHTML;
|
||||
const foreignBefore = foreign.innerHTML;
|
||||
const author = part.querySelector("span > jz-hws");
|
||||
const local = createJuzhen({ scope: { avoid: "#foreign" } });
|
||||
local.render(document.querySelector("main"));
|
||||
local.render(document.getElementById("b"));
|
||||
|
||||
local.revert(part);
|
||||
assert.equal(part.innerHTML, before, "本實例全清且作者/peer 產物完整保留");
|
||||
assert.equal(foreign.innerHTML, foreignBefore);
|
||||
assert.equal(part.querySelector("span > jz-hws"), author, "作者元素身份保留");
|
||||
assert.equal(document.getElementById("a").getAttribute("data-jz-block-level"), "author-level");
|
||||
assert.equal(foreign.getAttribute("data-jz-block-level"), "paragraph");
|
||||
peer.revert(foreign);
|
||||
});
|
||||
|
||||
test("所有權:本實例完整還原 wrapper 與 splitoff", () =>
|
||||
{
|
||||
const html = '<p lang="zh-Hans">前文<strong>粗体文字</strong>,后续</p>';
|
||||
|
||||
Reference in New Issue
Block a user