summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/views/abstract_controller_tests.js
diff options
context:
space:
mode:
authorPierre Rousseau <pro@odoo.com>2020-01-13 07:23:50 +0000
committerPierre Rousseau <pro@odoo.com>2020-01-14 08:38:24 +0000
commita44d7722bc681c2d51b207faa3a10eedd7867c4f (patch)
tree895c2ad9f9446f5fa141eaefd2f7d1fd5889030e /addons/web/static/tests/views/abstract_controller_tests.js
parent1b7d26c6fb20d7d8ac1fb6b2f81e9d1e5cbad05a (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.js43
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"]);
+
+ });
});
});