diff options
| author | Romain Estievenart <res@odoo.com> | 2020-03-10 10:10:05 +0000 |
|---|---|---|
| committer | Romain Estievenart <res@odoo.com> | 2020-03-10 21:40:19 +0000 |
| commit | 8ec70c9072ccd3b49b4b0c3cd7cdf22fb21cd4af (patch) | |
| tree | 3c2abafb7e9c89f7de86476108b036ab66487245 /addons/web/static/tests/chrome | |
| parent | 72623a2c82563f4465e28d6c71c6abae47585230 (diff) | |
[FIX] web: data-mobile on action_manager_act_window
Commit ca4eaf4 introduced the data-mobile attribute, used
to specify options to pass when executing an action, only in
mobile (like using a fullscreen modal).
However, we forgot to add the 'isMobile' check, so the option
was passed in desktop as well.
This commit fixes the issue and adds some tests.
Task ID: 2155601
closes odoo/odoo#47333
X-original-commit: 6cb68a53106fa7326a7f818461418437d5a0df77
Signed-off-by: res-odoo <res-odoo@users.noreply.github.com>
Diffstat (limited to 'addons/web/static/tests/chrome')
| -rw-r--r-- | addons/web/static/tests/chrome/action_manager_mobile_tests.js | 52 | ||||
| -rw-r--r-- | addons/web/static/tests/chrome/action_manager_tests.js | 48 |
2 files changed, 100 insertions, 0 deletions
diff --git a/addons/web/static/tests/chrome/action_manager_mobile_tests.js b/addons/web/static/tests/chrome/action_manager_mobile_tests.js index 6be9aae8e26..74f579e6dac 100644 --- a/addons/web/static/tests/chrome/action_manager_mobile_tests.js +++ b/addons/web/static/tests/chrome/action_manager_mobile_tests.js @@ -1,6 +1,7 @@ odoo.define('web.action_manager_mobile_tests', function (require) { "use strict"; +var ActionManager = require('web.ActionManager'); var testUtils = require('web.test_utils'); var createActionManager = testUtils.createActionManager; @@ -131,6 +132,57 @@ QUnit.module('ActionManager', { actionManager.destroy(); }); + + QUnit.test('data-mobile attribute on action button, in mobile', async function (assert) { + assert.expect(2); + + testUtils.mock.patch(ActionManager, { + doAction(action, options) { + if (typeof action !== 'number' && action.id === 1) { + assert.strictEqual(options.plop, 28); + } else { + assert.strictEqual(options.plop, undefined); + } + return this._super(...arguments); + }, + }); + + this.archs['partner,75,kanban'] = ` + <kanban> + <templates> + <t t-name="kanban-box"> + <div class="oe_kanban_global_click"> + <field name="display_name"/> + <button + name="1" + string="Execute action" + type="action" + data-mobile='{"plop": 28}'/> + </div> + </t> + </templates> + </kanban>`; + + this.actions.push({ + id: 100, + name: 'action 100', + res_model: 'partner', + type: 'ir.actions.act_window', + views: [[75, 'kanban']], + }); + + const actionManager = await createActionManager({ + actions: this.actions, + archs: this.archs, + data: this.data + }); + + await actionManager.doAction(100, {}); + await testUtils.dom.click(actionManager.$('button[data-mobile]:first')); + + actionManager.destroy(); + testUtils.mock.unpatch(ActionManager); + }); }); }); diff --git a/addons/web/static/tests/chrome/action_manager_tests.js b/addons/web/static/tests/chrome/action_manager_tests.js index 42abad111c5..6af38ce02de 100644 --- a/addons/web/static/tests/chrome/action_manager_tests.js +++ b/addons/web/static/tests/chrome/action_manager_tests.js @@ -1,6 +1,7 @@ odoo.define('web.action_manager_tests', function (require) { "use strict"; +var ActionManager = require('web.ActionManager'); var ReportClientAction = require('report.client_action'); var Notification = require('web.Notification'); var NotificationService = require('web.NotificationService'); @@ -4218,6 +4219,53 @@ QUnit.module('ActionManager', { actionManager.destroy(); }); + QUnit.test('data-mobile attribute on action button, in desktop', async function (assert) { + assert.expect(2); + + testUtils.mock.patch(ActionManager, { + doAction(action, options) { + assert.strictEqual(options.plop, undefined); + return this._super(...arguments); + }, + }); + + this.archs['partner,75,kanban'] = ` + <kanban> + <templates> + <t t-name="kanban-box"> + <div class="oe_kanban_global_click"> + <field name="display_name"/> + <button + name="1" + string="Execute action" + type="action" + data-mobile='{"plop": 28}'/> + </div> + </t> + </templates> + </kanban>`; + + this.actions.push({ + id: 100, + name: 'action 100', + res_model: 'partner', + type: 'ir.actions.act_window', + views: [[75, 'kanban']], + }); + + const actionManager = await createActionManager({ + actions: this.actions, + archs: this.archs, + data: this.data + }); + + await actionManager.doAction(100, {}); + await testUtils.dom.click(actionManager.$('button[data-mobile]:first')); + + actionManager.destroy(); + testUtils.mock.unpatch(ActionManager); + }); + QUnit.module('Search View Action'); QUnit.test('search view should keep focus during do_search', async function (assert) { |
