Files
owl/tests/compiler/validation.test.ts
T

41 lines
1.6 KiB
TypeScript
Raw Normal View History

2022-05-26 23:45:40 +02:00
import { TemplateSet } from "../../src/runtime/template_set";
2021-12-20 11:19:59 +01:00
import { renderToString, snapshotTemplate, TestContext } from "../helpers";
2020-11-26 16:45:25 +01:00
// -----------------------------------------------------------------------------
// basic validation
// -----------------------------------------------------------------------------
describe("basic validation", () => {
test("error if no template with given name", () => {
const context = new TemplateSet();
expect(() => context.getTemplate("invalidname")).toThrow("Missing template");
});
test("cannot add a different template with the same name", () => {
2020-11-26 16:45:25 +01:00
const context = new TemplateSet();
context.addTemplate("test", `<t/>`);
// Same template with the same name is fine
expect(() => context.addTemplate("test", "<t/>")).not.toThrow();
// Different template with the same name crashes
2020-11-26 16:45:25 +01:00
expect(() => context.addTemplate("test", "<div/>")).toThrow("already defined");
});
test("invalid xml", () => {
const template = "<div>";
2021-12-20 11:19:59 +01:00
expect(() => snapshotTemplate(template)).toThrow("Invalid XML in template");
2020-11-26 16:45:25 +01:00
});
test("missing template in template set", () => {
const context = new TestContext();
const template = `<t t-call="othertemplate" />`;
context.addTemplate("template", template);
expect(() => context.renderToString("template")).toThrowError("Missing");
});
test("error when unknown directive", () => {
const template = `<div t-best-beer="rochefort 10">test</div>`;
expect(() => renderToString(template)).toThrow("Unknown QWeb directive: 't-best-beer'");
});
});