diff options
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_model.js | 4 | ||||
| -rw-r--r-- | addons/web/static/tests/views/list_tests.js | 39 |
2 files changed, 42 insertions, 1 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index 5be80268cc6..bb599b2e859 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -1515,7 +1515,9 @@ var BasicModel = AbstractModel.extend({ } if (options.notifyChange === false) { - return Promise.resolve(_.keys(changes)); + return Promise.all(defs).then(function () { + return Promise.resolve(_.keys(changes)); + }); } return Promise.all(defs).then(function () { diff --git a/addons/web/static/tests/views/list_tests.js b/addons/web/static/tests/views/list_tests.js index 4d8cf86460e..2ea2e0396a9 100644 --- a/addons/web/static/tests/views/list_tests.js +++ b/addons/web/static/tests/views/list_tests.js @@ -7434,6 +7434,45 @@ QUnit.module('Views', { list.destroy(); }); + QUnit.test('multi edition: many2many_tags in many2many field', async function (assert) { + assert.expect(5); + + for (let i = 4; i <= 10; i++) { + this.data.bar.records.push({ id: i, display_name: "Value" + i}); + } + + const list = await createView({ + View: ListView, + model: 'foo', + data: this.data, + arch: '<tree multi_edit="1"><field name="m2m" widget="many2many_tags"/></tree>', + archs: { + 'bar,false,list': '<tree><field name="name"/></tree>', + 'bar,false,search': '<search></search>', + }, + }); + + assert.containsN(list, '.o_list_record_selector input:enabled', 5); + + // select two records and enter edit mode + await testUtils.dom.click(list.$('.o_data_row:eq(0) .o_list_record_selector input')); + await testUtils.dom.click(list.$('.o_data_row:eq(1) .o_list_record_selector input')); + await testUtils.dom.click(list.$('.o_data_row:eq(0) .o_data_cell')); + + await testUtils.fields.many2one.clickOpenDropdown("m2m"); + await testUtils.fields.many2one.clickItem("m2m", "Search More"); + assert.containsOnce(document.body, '.modal .o_list_view', "should have open the modal"); + + await testUtils.dom.click($('.modal .o_list_view .o_data_row:first')); + + assert.containsOnce(document.body, ".modal [role='alert']", "should have open the confirmation modal"); + assert.containsN(document.body, ".modal .o_field_many2manytags .badge", 3); + assert.strictEqual($(".modal .o_field_many2manytags .badge:last").text().trim(), "Value 3", + "should have display_name in badge"); + + list.destroy(); + }); + QUnit.test('editable list view: multi edition of many2one: set same value', async function (assert) { assert.expect(4); |
