odoo.define("base.abstract_controller_tests", function(require) { "use strict"; var testUtils = require("web.test_utils"); var createView = testUtils.createView; var BasicView = require("web.BasicView"); var BasicRenderer = require("web.BasicRenderer"); function getHtmlRenderer(html) { return BasicRenderer.extend({ start: function() { this.$el.html(html); return this._super.apply(this, arguments); } }); } function getHtmlView(html, viewType) { viewType = viewType || "test"; return BasicView.extend({ viewType: viewType, config: _.extend({}, BasicView.prototype.config, { Renderer: getHtmlRenderer(html) }) }); } QUnit.module( "Views", { beforeEach: function() { this.data = { test_model: { fields: {}, records: [] } }; } }, function() { QUnit.module('AbstractController'); QUnit.test( 'click on a a[type="action"] child triggers the correct action', function(assert) { assert.expect(7); var html = "
" + 'simple' + '' + "child" + "" + 'method' + 'descr' + 'descr2' + "
"; var view = createView({ View: getHtmlView(html, "test"), data: this.data, model: "test_model", arch: "", intercepts: { do_action: function (event) { assert.step(event.data.action.name || event.data.action); } }, mockRPC: function (route, args) { if (args.model === 'foo' && args.method === 'bar') { assert.step("method"); return $.when({name: 'method'}); } return this._super.apply(this, arguments); } }); testUtils.dom.click(view.$(".simple")); testUtils.dom.click(view.$(".with-child span")); testUtils.dom.click(view.$(".method")); testUtils.dom.click(view.$(".descr")); testUtils.dom.click(view.$(".descr2")); assert.verifySteps(["a1", "a2", "method", "method", "descr", "descr2"]); } ); } ); });