[IMP] *: re-add a bunch of tests

This commit is contained in:
Samuel Degueldre
2021-10-21 10:13:08 +02:00
committed by Aaron Bohy
parent b6eb4d009e
commit ced5d0f69f
19 changed files with 1525 additions and 279 deletions
@@ -0,0 +1,15 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`error handling cannot add twice the same template 1`] = `
"function anonymous(bdom, helpers
) {
let { text, createBlock, list, multi, html, toggler, component } = bdom;
let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
let block1 = createBlock(\`<div/>\`);
return function template(ctx, node, key = \\"\\") {
return block1();
}
}"
`;
@@ -178,6 +178,45 @@ exports[`simple templates, mostly static empty string in a template set 1`] = `
}"
`;
exports[`simple templates, mostly static inline template string in t-esc 1`] = `
"function anonymous(bdom, helpers
) {
let { text, createBlock, list, multi, html, toggler, component } = bdom;
let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
return function template(ctx, node, key = \\"\\") {
return text(\`text\`);
}
}"
`;
exports[`simple templates, mostly static inline template string with content in t-esc 1`] = `
"function anonymous(bdom, helpers
) {
let { text, createBlock, list, multi, html, toggler, component } = bdom;
let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
return function template(ctx, node, key = \\"\\") {
ctx = Object.create(ctx);
ctx[isBoundary] = 1
setContextValue(ctx, \\"v\\", 1);
return text(\`text\${ctx['v']}\`);
}
}"
`;
exports[`simple templates, mostly static inline template string with variable in context 1`] = `
"function anonymous(bdom, helpers
) {
let { text, createBlock, list, multi, html, toggler, component } = bdom;
let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
return function template(ctx, node, key = \\"\\") {
return text(\`text \${ctx['v']}\`);
}
}"
`;
exports[`simple templates, mostly static multiple root nodes 1`] = `
"function anonymous(bdom, helpers
) {
+40
View File
@@ -0,0 +1,40 @@
import { renderToString, snapshotEverything, TestContext } from "../helpers";
snapshotEverything();
describe("error handling", () => {
test("invalid xml", () => {
expect(() => renderToString("<div>")).toThrow("Invalid XML in template");
});
test("nice warning if no template with given name", () => {
const context = new TestContext();
expect(() => context.renderToString("invalidname")).toThrow("Missing template");
});
test("cannot add twice the same template", () => {
const context = new TestContext();
context.addTemplate("test", `<t></t>`);
expect(() => context.addTemplate("test", "<div/>", { allowDuplicate: true })).not.toThrow("already defined");
expect(() => context.addTemplate("test", "<div/>")).toThrow("already defined");
});
// test("addTemplates throw if parser error", () => {
// const context = new TestContext();
// expect(() => {
// context.addTemplates("<templates><abc>></templates>");
// }).toThrow("Invalid XML in template");
// });
test("nice error when t-on is evaluated with a missing event", () => {
expect(() => renderToString(`<div t-on="somemethod"></div>`)).toThrow(
"Missing event name with t-on directive"
);
});
test("error when unknown directive", () => {
expect(() => renderToString(`<div t-best-beer="rochefort 10">test</div>`)).toThrow(
"Unknown QWeb directive: 't-best-beer'"
);
});
});
+15
View File
@@ -122,6 +122,21 @@ describe("simple templates, mostly static", () => {
const template = `<tr><td>cell</td></tr>`;
expect(renderToString(template)).toBe(template);
});
test("inline template string in t-esc", () => {
const template = '<t><t t-esc="`text`"/></t>';
expect(renderToString(template)).toBe("text");
});
test("inline template string with content in t-esc", () => {
const template = '<t><t t-set="v" t-value="1"/><t t-esc="`text${v}`"/></t>';
expect(renderToString(template)).toBe("text1");
});
test("inline template string with variable in context", () => {
const template = '<t><t t-esc="`text ${v}`"/></t>';
expect(renderToString(template, { v: "from context" })).toBe("text from context");
});
});
describe("loading templates", () => {
+31
View File
@@ -0,0 +1,31 @@
import {
renderToString,
snapshotEverything,
} from "../helpers";
snapshotEverything();
describe("qweb t-tag", () => {
test.skip("simple usecases", () => {
expect(renderToString(`<t t-tag="'div'"></t>`)).toBe("<div></div>");
expect(renderToString(`<t t-tag="tag">text</t>`, { tag: "span" })).toBe("<span>text</span>");
});
test.skip("with multiple child nodes", () => {
const template = `
<t t-tag="tag">
pear
<span>apple</span>
strawberry
</t>`;
expect(renderToString(template, { tag: "div" })).toBe(
"<div> pear <span>apple</span> strawberry </div>"
);
});
test.skip("with multiple attributes", () => {
const template = `<t t-tag="tag" class="blueberry" taste="raspberry">gooseberry</t>`;
const expected = `<div taste=\"raspberry\" class=\"blueberry\">gooseberry</div>`;
expect(renderToString(template, { tag: "div" })).toBe(expected);
});
});