[IMP] templates: can load multiple at once and also from XMLDocument

This commit is contained in:
Bruno Boi
2021-11-16 11:39:01 +01:00
committed by Aaron Bohy
parent 03787cfb39
commit db93ef08ff
7 changed files with 184 additions and 59 deletions
+70
View File
@@ -0,0 +1,70 @@
import { snapshotEverything, TestContext } from "../helpers";
snapshotEverything();
describe("loading templates", () => {
test("can initialize qweb with a string", () => {
const templates = `<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<div t-name="hey">jupiler</div>
</templates>`;
const context = new TestContext();
context.addTemplates(templates);
expect(context.renderToString("hey")).toBe("<div>jupiler</div>");
});
test("can initialize qweb with an XMLDocument", () => {
const data = `<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<div t-name="hey">jupiler</div>
</templates>`;
const xml = new DOMParser().parseFromString(data, "text/xml");
const context = new TestContext();
context.addTemplates(xml);
expect(context.renderToString("hey")).toBe("<div>jupiler</div>");
});
test("can load a few templates from a xml string", () => {
const data = `<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-name="items"><li>ok</li><li>foo</li></t>
<ul t-name="main"><t t-call="items"/></ul>
</templates>`;
const context = new TestContext();
context.addTemplates(data);
const result = context.renderToString("main");
expect(result).toBe("<ul><li>ok</li><li>foo</li></ul>");
});
test("can load a few templates from an XMLDocument", () => {
const data = `<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-name="items"><li>ok</li><li>foo</li></t>
<ul t-name="main"><t t-call="items"/></ul>
</templates>`;
const xml = new DOMParser().parseFromString(data, "text/xml");
const context = new TestContext();
context.addTemplates(xml);
const result = context.renderToString("main");
expect(result).toBe("<ul><li>ok</li><li>foo</li></ul>");
});
test("does not crash if string does not have templates", () => {
const data = "";
const context = new TestContext();
context.addTemplates(data);
expect(Object.keys(context.rawTemplates)).toEqual([]);
});
test("does not crash if XMLDocument does not have templates", () => {
const data = "";
const xml = new DOMParser().parseFromString(data, "text/xml");
const context = new TestContext();
context.addTemplates(xml);
expect(Object.keys(context.rawTemplates)).toEqual([]);
});
});