add test (snapshot of t-widget directive in one case)

This commit is contained in:
Géry Debongnie
2019-02-14 12:37:07 +01:00
parent 85889d6cd2
commit d9ef6d1e93
2 changed files with 71 additions and 0 deletions
@@ -0,0 +1,51 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`random stuff/miscellaneous snapshotting compiled code 1`] = `
"function anonymous(context,extra
) {
let owner = context;
let h = this.h;
let c1 = [], p1 = {};
let vn1 = h('div', p1, c1);
//WIDGET
let _2_index = c1.length;
c1.push(null);
let def3;
let w4 = 4 in context.__widget__.cmap ? context.__widget__.children[context.__widget__.cmap[4]] : false;
let props4 = {flag: context['state'].flag};
let isNew4 = !w4;
if (w4 && w4.__widget__.renderPromise) {
if (w4.__widget__.isStarted) {
if (props4 === w4.__widget__.renderProps) {
def3 = w4.__widget__.renderPromise;
} else {
def3 = w4.updateProps(props4);
}
} else {
isNew4 = true
if (props4 === w4.__widget__.renderProps) {
def3 = w4.__widget__.renderPromise;
} else {
w4.destroy();
w4 = false
}
}
}
if (!def3) {
if (w4) {
def3 = w4.updateProps(props4);
} else {
w4 = new context.widgets['child'](owner, props4);
context.__widget__.cmap[4] = w4.__widget__.id;
def3 = w4._start();
}
}
if (isNew4) {
def3 = def3.then(vnode=>{let pvnode=h(vnode.sel, {key: 4});c1[_2_index]=pvnode;pvnode.data.hook = {insert(vn){let nvn=w4._mount(vnode, vn.elm);pvnode.elm=nvn.elm},remove(){w4.destroy()}}});
} else {
def3 = def3.then(()=>{if (!w4.__widget__.vnode) {return};let vnode=h(w4.__widget__.vnode.sel, {key: 4});vnode.elm=w4.el;c1[_2_index]=vnode;vnode.data.hook = {insert(a){a.elm.parentNode.replaceChild(w4.el,a.elm);a.elm=w4.el;w4.__mount();},remove(){w4.destroy()}}});
}
extra.promises.push(def3);
return vn1;
}"
`;
+20
View File
@@ -793,6 +793,26 @@ describe("random stuff/miscellaneous", () => {
await widget.updateState({ flag: true });
expect(fixture.innerHTML).toBe("<div><span>abcdef</span></div>");
});
test("snapshotting compiled code", async () => {
env.qweb.addTemplate(
"parent",
`<div><t t-widget="child" t-props="{flag:state.flag}"/></div>`
);
class Parent extends Widget {
inlineTemplate = "parent";
widgets = { child: Child };
state = { flag: false };
}
class Child extends Widget {
inlineTemplate = `<span>abc<t t-if="props.flag">def</t></span>`;
}
const widget = new Parent(env);
await widget.mount(fixture);
expect(env.qweb.templates.parent.toString()).toMatchSnapshot();
});
});
describe("async rendering", () => {