[IMP] qweb: compiler: support t-key on node and component without t-foreach

This commit is contained in:
Lucas Perais (lpe)
2021-11-04 13:46:49 +01:00
committed by Géry Debongnie
parent 779fc6b02b
commit ae71db28e4
19 changed files with 722 additions and 64 deletions
+57
View File
@@ -54,4 +54,61 @@ describe("togglers", () => {
expect(fixture.innerHTML).toBe("<p>hey</p>");
expect(fixture.firstChild).not.toBe(textnode);
});
test("beforeRemove is called", () => {
const block = createBlock("<p>hey</p>");
function blockOverriden() {
const vn = block();
vn.beforeRemove = () => {
steps.push("beforeRemove");
};
return vn;
}
const steps: string[] = [];
const tree = toggler("key1", blockOverriden());
mount(tree, fixture);
expect(fixture.innerHTML).toBe("<p>hey</p>");
patch(tree, toggler("key2", text("foo")));
expect(fixture.innerHTML).toBe("foo");
patch(tree, toggler("key3", blockOverriden()), true);
expect(fixture.innerHTML).toBe("<p>hey</p>");
patch(tree, toggler("key2", text("foo")), true);
expect(fixture.innerHTML).toBe("foo");
expect(steps).toEqual(["beforeRemove"]);
});
test("beforeRemove is called when within a block", () => {
const block = createBlock("<p><block-child-0/></p>");
const conditionalBlock = createBlock("<p>hey</p>");
const steps: string[] = [];
function blockOverriden() {
const vn = conditionalBlock();
vn.beforeRemove = function () {
steps.push("beforeRemove");
};
return vn;
}
const mainBlock = block([], [toggler("key1", blockOverriden())]);
mount(mainBlock, fixture);
expect(fixture.innerHTML).toBe("<p><p>hey</p></p>");
patch(mainBlock, block([], []));
expect(fixture.innerHTML).toBe("<p></p>");
patch(mainBlock, block([], [toggler("key1", blockOverriden())]), true);
expect(fixture.innerHTML).toBe("<p><p>hey</p></p>");
patch(mainBlock, block([], []), true);
expect(fixture.innerHTML).toBe("<p></p>");
expect(steps).toEqual(["beforeRemove"]);
});
});