mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
9a5edb4590
With the introduction of t-call-context, there is now no guarantee that the ComponentNode can be found in the rendering context, any attempt to do so can crash when combined with t-call-context. This commit fixes that by using `this` instead, which in compiled templates refers to the component that is being rendered.
386 lines
12 KiB
Plaintext
386 lines
12 KiB
Plaintext
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
|
|
exports[`t-set slot setted value (with t-set) not accessible with t-esc 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { isBoundary, withDefault, setContextValue, capture, markRaw } = helpers;
|
|
const comp1 = app.createComponent(\`Childcomp\`, true, true, false, true);
|
|
|
|
let block1 = createBlock(\`<div><p><block-text-0/></p><block-child-0/><p><block-text-1/></p></div>\`);
|
|
|
|
function slot1(ctx, node, key = \\"\\") {
|
|
ctx = Object.create(ctx);
|
|
ctx[isBoundary] = 1
|
|
setContextValue(ctx, \\"iter\\", 'inCall');
|
|
return text('');
|
|
}
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
ctx = Object.create(ctx);
|
|
ctx[isBoundary] = 1
|
|
setContextValue(ctx, \\"iter\\", 'source');
|
|
let txt1 = ctx['iter'];
|
|
const ctx1 = capture(ctx, this);
|
|
const b2 = comp1({slots: markRaw({'default': {__render: slot1.bind(this), __ctx: ctx1}})}, key + \`__1\`, node, this, null);
|
|
let txt2 = ctx['iter'];
|
|
return block1([txt1, txt2], [b2]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set slot setted value (with t-set) not accessible with t-esc 2`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { isBoundary, withDefault, setContextValue } = helpers;
|
|
|
|
let block1 = createBlock(\`<div><block-text-0/><block-text-1/></div>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
ctx = Object.create(ctx);
|
|
ctx[isBoundary] = 1
|
|
let txt1 = ctx['iter'];
|
|
setContextValue(ctx, \\"iter\\", 'called');
|
|
let txt2 = ctx['iter'];
|
|
return block1([txt1, txt2]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set slots with a t-set with a component in body 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { capture, isBoundary, withDefault, LazyValue, safeOutput, markRaw } = helpers;
|
|
const comp1 = app.createComponent(\`C\`, true, false, false, true);
|
|
const comp2 = app.createComponent(\`Child\`, true, true, false, true);
|
|
|
|
function slot1(ctx, node, key = \\"\\") {
|
|
ctx = Object.create(ctx);
|
|
ctx[isBoundary] = 1
|
|
ctx[\`v\`] = new LazyValue(value1, ctx, this, node, key);
|
|
const b3 = text(\` in slot \`);
|
|
const b4 = safeOutput(ctx['v']);
|
|
return multi([b3, b4]);
|
|
}
|
|
|
|
function value1(ctx, node, key = \\"\\") {
|
|
return comp1({}, key + \`__1\`, node, this, null);
|
|
}
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
const ctx1 = capture(ctx, this);
|
|
return comp2({slots: markRaw({'default': {__render: slot1.bind(this), __ctx: ctx1}})}, key + \`__2\`, node, this, null);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set slots with a t-set with a component in body 2`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { callSlot } = helpers;
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
const b2 = text(\`Child \`);
|
|
const b3 = callSlot(ctx, node, key, 'default', false, {});
|
|
return multi([b2, b3]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set slots with a t-set with a component in body 3`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
return text(\`C\`);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set slots with an t-set with a component in body 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { capture, isBoundary, withDefault, LazyValue, safeOutput, markRaw } = helpers;
|
|
const comp1 = app.createComponent(\`Child\`, true, false, false, true);
|
|
const comp2 = app.createComponent(\`Blorg\`, true, true, false, true);
|
|
|
|
let block4 = createBlock(\`<div>coffee</div>\`);
|
|
|
|
function slot1(ctx, node, key = \\"\\") {
|
|
ctx = Object.create(ctx);
|
|
ctx[isBoundary] = 1
|
|
ctx[\`v\`] = new LazyValue(value1, ctx, this, node, key);
|
|
const b5 = text(\` tea \`);
|
|
const b6 = safeOutput(ctx['v']);
|
|
return multi([b5, b6]);
|
|
}
|
|
|
|
function value1(ctx, node, key = \\"\\") {
|
|
const b3 = comp1({}, key + \`__1\`, node, this, null);
|
|
const b4 = block4();
|
|
return multi([b3, b4]);
|
|
}
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
const ctx1 = capture(ctx, this);
|
|
return comp2({slots: markRaw({'default': {__render: slot1.bind(this), __ctx: ctx1}})}, key + \`__2\`, node, this, null);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set slots with an t-set with a component in body 2`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { callSlot } = helpers;
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
const b2 = text(\`Blorg \`);
|
|
const b3 = callSlot(ctx, node, key, 'default', false, {});
|
|
return multi([b2, b3]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set slots with an t-set with a component in body 3`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
return text(\`Child\`);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set slots with an unused t-set with a component in body 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { capture, isBoundary, withDefault, LazyValue, markRaw } = helpers;
|
|
const comp1 = app.createComponent(\`Child\`, true, false, false, true);
|
|
const comp2 = app.createComponent(\`Child\`, true, true, false, true);
|
|
|
|
function slot1(ctx, node, key = \\"\\") {
|
|
ctx = Object.create(ctx);
|
|
ctx[isBoundary] = 1
|
|
ctx[\`v\`] = new LazyValue(value1, ctx, this, node, key);
|
|
return text(\` in slot \`);
|
|
}
|
|
|
|
function value1(ctx, node, key = \\"\\") {
|
|
return comp1({}, key + \`__1\`, node, this, null);
|
|
}
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
const ctx1 = capture(ctx, this);
|
|
return comp2({slots: markRaw({'default': {__render: slot1.bind(this), __ctx: ctx1}})}, key + \`__2\`, node, this, null);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set slots with an unused t-set with a component in body 2`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { callSlot } = helpers;
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
const b2 = text(\`Child \`);
|
|
const b3 = callSlot(ctx, node, key, 'default', false, {});
|
|
return multi([b2, b3]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set t-set can't alter component even if key in component 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { isBoundary, withDefault, setContextValue } = helpers;
|
|
|
|
let block1 = createBlock(\`<div><p><block-text-0/></p><p><block-text-1/></p></div>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
ctx = Object.create(ctx);
|
|
ctx[isBoundary] = 1
|
|
let txt1 = ctx['iter'];
|
|
setContextValue(ctx, \\"iter\\", 5);
|
|
let txt2 = ctx['iter'];
|
|
return block1([txt1, txt2]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set t-set can't alter component if key not in component 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { isBoundary, withDefault, setContextValue } = helpers;
|
|
|
|
let block1 = createBlock(\`<div><p><block-text-0/></p><p><block-text-1/></p></div>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
ctx = Object.create(ctx);
|
|
ctx[isBoundary] = 1
|
|
let txt1 = ctx['iter'];
|
|
setContextValue(ctx, \\"iter\\", 5);
|
|
let txt2 = ctx['iter'];
|
|
return block1([txt1, txt2]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set t-set in t-if 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { isBoundary, withDefault, setContextValue } = helpers;
|
|
|
|
let block1 = createBlock(\`<div><p><block-text-0/></p></div>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
ctx = Object.create(ctx);
|
|
ctx[isBoundary] = 1
|
|
setContextValue(ctx, \\"flag\\", ctx['state'].flag);
|
|
if (ctx['flag']==='if') {
|
|
setContextValue(ctx, \\"iter\\", 2);
|
|
} else if (ctx['flag']==='elif') {
|
|
setContextValue(ctx, \\"iter\\", 3);
|
|
} else {
|
|
setContextValue(ctx, \\"iter\\", 4);
|
|
}
|
|
let txt1 = ctx['iter'];
|
|
return block1([txt1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set t-set not altered by child comp 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { isBoundary, withDefault, setContextValue } = helpers;
|
|
const comp1 = app.createComponent(\`Childcomp\`, true, false, false, true);
|
|
|
|
let block1 = createBlock(\`<div><p><block-text-0/></p><block-child-0/><p><block-text-1/></p></div>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
ctx = Object.create(ctx);
|
|
ctx[isBoundary] = 1
|
|
setContextValue(ctx, \\"iter\\", 'source');
|
|
let txt1 = ctx['iter'];
|
|
const b2 = comp1({}, key + \`__1\`, node, this, null);
|
|
let txt2 = ctx['iter'];
|
|
return block1([txt1, txt2], [b2]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set t-set not altered by child comp 2`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { isBoundary, withDefault, setContextValue } = helpers;
|
|
|
|
let block1 = createBlock(\`<div><block-text-0/><block-text-1/></div>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
ctx = Object.create(ctx);
|
|
ctx[isBoundary] = 1
|
|
let txt1 = ctx['iter'];
|
|
setContextValue(ctx, \\"iter\\", 'called');
|
|
let txt2 = ctx['iter'];
|
|
return block1([txt1, txt2]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set t-set outside modified in t-if 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { isBoundary, withDefault, setContextValue } = helpers;
|
|
|
|
let block1 = createBlock(\`<div><p><block-text-0/></p></div>\`);
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
ctx = Object.create(ctx);
|
|
ctx[isBoundary] = 1
|
|
setContextValue(ctx, \\"iter\\", 0);
|
|
setContextValue(ctx, \\"flag\\", ctx['state'].flag);
|
|
if (ctx['flag']==='if') {
|
|
setContextValue(ctx, \\"iter\\", 2);
|
|
} else if (ctx['flag']==='elif') {
|
|
setContextValue(ctx, \\"iter\\", 3);
|
|
} else {
|
|
setContextValue(ctx, \\"iter\\", 4);
|
|
}
|
|
let txt1 = ctx['iter'];
|
|
return block1([txt1]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set t-set with a component in body 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { isBoundary, withDefault, LazyValue, safeOutput } = helpers;
|
|
const comp1 = app.createComponent(\`Child\`, true, false, false, true);
|
|
|
|
let block1 = createBlock(\`<div><div><block-child-0/></div></div>\`);
|
|
|
|
function value1(ctx, node, key = \\"\\") {
|
|
return comp1({}, key + \`__1\`, node, this, null);
|
|
}
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
ctx = Object.create(ctx);
|
|
ctx[isBoundary] = 1
|
|
ctx[\`v\`] = new LazyValue(value1, ctx, this, node, key);
|
|
const b3 = safeOutput(ctx['v']);
|
|
return block1([], [b3]);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set t-set with a component in body 2`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
return text(\`Child\`);
|
|
}
|
|
}"
|
|
`;
|
|
|
|
exports[`t-set t-set with something in body 1`] = `
|
|
"function anonymous(app, bdom, helpers
|
|
) {
|
|
let { text, createBlock, list, multi, html, toggler, comment } = bdom;
|
|
let { isBoundary, withDefault, LazyValue, safeOutput } = helpers;
|
|
|
|
let block1 = createBlock(\`<div><div><block-child-0/></div></div>\`);
|
|
let block2 = createBlock(\`<p>coucou</p>\`);
|
|
|
|
function value1(ctx, node, key = \\"\\") {
|
|
return block2();
|
|
}
|
|
|
|
return function template(ctx, node, key = \\"\\") {
|
|
ctx = Object.create(ctx);
|
|
ctx[isBoundary] = 1
|
|
ctx[\`v\`] = new LazyValue(value1, ctx, this, node, key);
|
|
const b3 = safeOutput(ctx['v']);
|
|
return block1([], [b3]);
|
|
}
|
|
}"
|
|
`;
|