summaryrefslogtreecommitdiff
path: root/addons/web/static/tests
diff options
context:
space:
mode:
authorJulien Mougenot <jum@odoo.com>2019-09-30 09:57:21 +0000
committerJulien Mougenot <jum@odoo.com>2019-10-07 11:22:04 +0000
commitda2b24714616bfbaf3ed7834844618207ec6ca2c (patch)
treef21539e7c4d4bd7cfa7b958e959332710cf00346 /addons/web/static/tests
parent0f412d56d6fa3f53e7a15b7eba87863334497cf0 (diff)
[FIX] web: m2o updates its value after reload
Changes the behaviour of many2ones when their value is changed via a form dialog. Before this commit, when editing a m2o with a form dialog opened by an external button, the field triggered an onchange with its old value before reloading its widget. This caused the edition in list views to display outdated information when saving multiple records. Now, the reload is executed first, then the onchange occurs so that the value is the newly updated one. Part of task 2078807 closes odoo/odoo#37576 Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Diffstat (limited to 'addons/web/static/tests')
-rw-r--r--addons/web/static/tests/fields/relational_fields/field_many2one_tests.js2
-rw-r--r--addons/web/static/tests/views/list_tests.js42
2 files changed, 43 insertions, 1 deletions
diff --git a/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js b/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js
index a8743a4cddf..081bd4e3598 100644
--- a/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js
+++ b/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js
@@ -557,7 +557,7 @@ QUnit.module('fields', {}, function () {
// save the modal and make sure an onchange is triggered
await testUtils.dom.click($('.modal .modal-footer .btn-primary').first());
- assert.verifySteps(['read', 'get_formview_id', 'load_views', 'read', 'write', 'onchange', 'read']);
+ assert.verifySteps(['read', 'get_formview_id', 'load_views', 'read', 'write', 'read', 'onchange']);
// save the main record, and check that no extra rpcs are done (record
// is not dirty, only a related record was modified)
diff --git a/addons/web/static/tests/views/list_tests.js b/addons/web/static/tests/views/list_tests.js
index 141a98e9a80..32c868a9bb0 100644
--- a/addons/web/static/tests/views/list_tests.js
+++ b/addons/web/static/tests/views/list_tests.js
@@ -6074,6 +6074,48 @@ QUnit.module('Views', {
list.destroy();
});
+ QUnit.test('editable list: edit many2one from external link', async function (assert) {
+ assert.expect(2);
+
+ const list = await createView({
+ arch: `
+ <tree editable="top" multi_edit="1">
+ <field name="m2o"/>
+ </tree>`,
+ archs: {
+ 'bar,false,form': '<form string="Bar"><field name="display_name"/></form>',
+ },
+ data: this.data,
+ mockRPC: function (route, args) {
+ if (args.method === 'get_formview_id') {
+ return Promise.resolve(false);
+ }
+ return this._super(route, args);
+ },
+ model: 'foo',
+ View: ListView,
+ });
+
+ await testUtils.dom.click(list.$('thead .o_list_record_selector:first input'));
+ await testUtils.dom.click(list.$('.o_data_row:first .o_data_cell:eq(0)'));
+ await testUtils.dom.click(list.$('.o_external_button:first'));
+
+ // Change the M2O value in the Form dialog
+ await testUtils.fields.editInput($('.modal input:first'), "OOF");
+ await testUtils.dom.click($('.modal .btn-primary'));
+
+ assert.strictEqual($('.modal .o_field_widget[name=m2o]').text(), "OOF",
+ "Value of the m2o should be updated in the confirmation dialog");
+
+ // Close the confirmation dialog
+ await testUtils.dom.click($('.modal .btn-primary'));
+
+ assert.strictEqual(list.$('.o_data_cell:first').text(), "OOF",
+ "Value of the m2o should be updated in the list");
+
+ list.destroy();
+ });
+
QUnit.test('list grouped by date:month', async function (assert) {
assert.expect(1);