diff options
| author | Pierre Rousseau <pro@odoo.com> | 2020-01-13 07:23:50 +0000 |
|---|---|---|
| committer | Pierre Rousseau <pro@odoo.com> | 2020-01-14 08:38:24 +0000 |
| commit | a44d7722bc681c2d51b207faa3a10eedd7867c4f (patch) | |
| tree | 895c2ad9f9446f5fa141eaefd2f7d1fd5889030e /addons/web/static/tests/views/abstract_controller_tests.js | |
| parent | 1b7d26c6fb20d7d8ac1fb6b2f81e9d1e5cbad05a (diff) | |
[FIX] web: correctly destroy owl renderer
d06e67e748ca9c5c538d5e1a1efc4ae798fee707 introduces tools to use owl
renderer in a view. However, this owl renderer is never destroyed.
This commit fixes this issue.
Task-ID 2171436
Diffstat (limited to 'addons/web/static/tests/views/abstract_controller_tests.js')
| -rw-r--r-- | addons/web/static/tests/views/abstract_controller_tests.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/addons/web/static/tests/views/abstract_controller_tests.js b/addons/web/static/tests/views/abstract_controller_tests.js index e0fa433b13c..fe73208f4ea 100644 --- a/addons/web/static/tests/views/abstract_controller_tests.js +++ b/addons/web/static/tests/views/abstract_controller_tests.js @@ -1,10 +1,15 @@ odoo.define("base.abstract_controller_tests", function (require) { "use strict"; +const { xml } = owl.tags; + var testUtils = require("web.test_utils"); var createView = testUtils.createView; var BasicView = require("web.BasicView"); var BasicRenderer = require("web.BasicRenderer"); +const AbstractRenderer = require('web.AbstractRendererOwl'); +const ControllerAdapter = require('web.ControllerAdapter'); +const RendererWrapper = require('web.RendererWrapper'); function getHtmlRenderer(html) { return BasicRenderer.extend({ @@ -14,6 +19,21 @@ function getHtmlRenderer(html) { } }); } + +function getOwlView(owlRenderer, viewType) { + viewType = viewType || "test"; + return BasicView.extend({ + viewType: viewType, + config: _.extend({}, BasicView.prototype.config, { + Renderer: owlRenderer, + Controller: ControllerAdapter.extend({}) + }), + getRenderer() { + return new RendererWrapper(null, {}, this.config.Renderer); + } + }); +} + function getHtmlView(html, viewType) { viewType = viewType || "test"; return BasicView.extend({ @@ -78,5 +98,28 @@ QUnit.module("Views", { view.destroy(); } ); + + QUnit.test('OWL Renderer correctly destroyed', async function (assert) { + assert.expect(2); + + class Renderer extends AbstractRenderer { + __destroy() { + assert.step("destroy"); + super.__destroy(); + } + } + Renderer.template = xml`<div>Test</div>`; + + var view = await createView({ + View: getOwlView(Renderer, "test"), + data: this.data, + model: "test_model", + arch: "<test/>", + }); + view.destroy(); + + assert.verifySteps(["destroy"]); + + }); }); }); |
