summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/web/static/src/js/views/basic/basic_model.js4
-rw-r--r--addons/web/static/tests/views/list_tests.js39
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);