diff --git a/addons/web_settings_dashboard/static/src/js/dashboard.js b/addons/web_settings_dashboard/static/src/js/dashboard.js index 2065769bdc0..85a2be3e8c5 100644 --- a/addons/web_settings_dashboard/static/src/js/dashboard.js +++ b/addons/web_settings_dashboard/static/src/js/dashboard.js @@ -371,7 +371,7 @@ var DashboardCompany = Widget.extend({ template: 'DashboardCompany', events: { - 'click .o_setup_company': 'on_setup_company' + 'click .o_setup_company': '_onSetupCompany' }, init: function (parent, data) { @@ -380,7 +380,16 @@ var DashboardCompany = Widget.extend({ this._super.apply(this, arguments); }, - on_setup_company: function () { + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * @private + * @param {MouseEvent} ev + */ + _onSetupCompany: function (ev) { + ev.preventDefault(); var self = this; var action = { type: 'ir.actions.act_window', diff --git a/addons/web_settings_dashboard/static/tests/dashboard_tests.js b/addons/web_settings_dashboard/static/tests/dashboard_tests.js index 0fab2f8d97f..d0a8ced5d38 100644 --- a/addons/web_settings_dashboard/static/tests/dashboard_tests.js +++ b/addons/web_settings_dashboard/static/tests/dashboard_tests.js @@ -231,6 +231,46 @@ QUnit.module('settings_dashboard', function () { dashboard.destroy(); }); + + QUnit.test('Prevent default behaviour when clicking on set up company', function (assert) { + assert.expect(3); + + var dashboard = createDashboard({ + dashboards: ['company'], + mockRPC: function (route, args) { + if (route === '/web_settings_dashboard/data') { + return $.when({ + company: { + company_name: 'MyCompany' + } + }); + } + return this._super.apply(this, arguments); + }, + }); + + var $setupCompany = dashboard.$('.o_setup_company'); + + assert.strictEqual($setupCompany.length, 1, + "should have button to set up company"); + + // Prevent the browser default behaviour when clicking on anything. + // This includes clicking on a `` with `href`, so that it does not + // change the URL in the address bar. + $(document.body).on('click.o_test', function (ev) { + assert.ok(ev.isDefaultPrevented(), + "should have prevented browser default behaviour"); + assert.strictEqual(ev.target, $setupCompany[0], + "should have clicked on 'setup company' button"); + ev.preventDefault(); + }); + + $setupCompany.click(); + + $(document.body).off('click.o_test'); + + dashboard.destroy(); + }); }); });