From 16bbb8bc9ff2d3b6e41e3947dd36e73bb916a8b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Mon, 24 Jun 2019 15:28:01 +0200 Subject: [PATCH] [FIX] qweb/component: better handling for t-debug - fix issue with t-debug on a t-set (defining a slot) - put t-debug and t-log at a very low (high) priority to make sure they are executed before other directives closes #201 --- src/qweb_core.ts | 11 +++++++---- src/qweb_directives.ts | 4 ++-- tests/component.test.ts | 25 +++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/qweb_core.ts b/src/qweb_core.ts index f6605035..446be574 100644 --- a/src/qweb_core.ts +++ b/src/qweb_core.ts @@ -322,10 +322,13 @@ export class QWeb extends EventBus { ); } if (isDebug) { - console.log( - `Template: ${this.templates[name].elem.outerHTML}\nCompiled code:\n` + - template.toString() - ); + const tpl = this.templates[name]; + if (tpl) { + const msg = `Template: ${ + tpl.elem.outerHTML + }\nCompiled code:\n${template.toString()}`; + console.log(msg); + } } return template; } diff --git a/src/qweb_directives.ts b/src/qweb_directives.ts index 71314a6c..c913f831 100644 --- a/src/qweb_directives.ts +++ b/src/qweb_directives.ts @@ -304,7 +304,7 @@ QWeb.addDirective({ //------------------------------------------------------------------------------ QWeb.addDirective({ name: "debug", - priority: 99, + priority: 1, atNodeEncounter({ ctx }) { ctx.addLine("debugger;"); } @@ -315,7 +315,7 @@ QWeb.addDirective({ //------------------------------------------------------------------------------ QWeb.addDirective({ name: "log", - priority: 99, + priority: 1, atNodeEncounter({ ctx, value }) { const expr = ctx.formatExpression(value); ctx.addLine(`console.log(${expr})`); diff --git a/tests/component.test.ts b/tests/component.test.ts index 5083f14b..94659ec4 100644 --- a/tests/component.test.ts +++ b/tests/component.test.ts @@ -3093,6 +3093,31 @@ describe("t-slot directive", () => { '
some content
' ); }); + + test("t-debug on a t-set (defining a slot)", async () => { + const consoleLog = console.log; + console.log = jest.fn(); + + env.qweb.addTemplates(` + +
+ abc +
+ + + +
+ `); + class Dialog extends Widget {} + class Parent extends Widget { + components = { Dialog }; + } + const parent = new Parent(env); + await parent.mount(fixture); + expect(console.log).toHaveBeenCalledTimes(0); + console.log = consoleLog; + }); + }); describe("t-model directive", () => {