summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/fields/relational_fields
diff options
context:
space:
mode:
authorMartin Trigaux <mat@odoo.com>2019-07-09 12:23:21 +0000
committerMartin Trigaux <mat@odoo.com>2019-07-09 12:28:03 +0000
commit64907ba7aa000a4228e6182c7735d2b11e941c8d (patch)
treef2a16d66ea584aa89a197bbf878dbadbb0c395ed /addons/web/static/tests/fields/relational_fields
parent3d1d4575a648cb62555fd01d4956639d6db935b2 (diff)
parentb27c145cf2f95e00d7155db99a08f631e1a21bc4 (diff)
[MERGE] forward port from saas-12.4 to master up to b27c145cf2f9
closes odoo/odoo#34697 Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
Diffstat (limited to 'addons/web/static/tests/fields/relational_fields')
-rw-r--r--addons/web/static/tests/fields/relational_fields/field_one2many_tests.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/addons/web/static/tests/fields/relational_fields/field_one2many_tests.js b/addons/web/static/tests/fields/relational_fields/field_one2many_tests.js
index f1f5f2a5e7e..508ce38a961 100644
--- a/addons/web/static/tests/fields/relational_fields/field_one2many_tests.js
+++ b/addons/web/static/tests/fields/relational_fields/field_one2many_tests.js
@@ -8421,6 +8421,75 @@ QUnit.module('fields', {}, function () {
form.destroy();
});
+
+ QUnit.test('two one2many fields with same relation and onchanges', async function (assert) {
+ // this test simulates the presence of two one2many fields with onchanges, such that
+ // changes to the first o2m are repercuted on the second one
+ assert.expect(6);
+
+ this.data.partner.fields.turtles2 = {
+ string: "Turtles 2",
+ type: "one2many",
+ relation: 'turtle',
+ relation_field: 'turtle_trululu',
+ };
+ this.data.partner.onchanges = {
+ turtles: function (obj) {
+ // when we add a line to turtles, add same line to turtles2
+ if (obj.turtles.length) {
+ obj.turtles = [[5]].concat(obj.turtles);
+ obj.turtles2 = obj.turtles;
+ }
+ },
+ turtles2: function (obj) {
+ // simulate an onchange on turtles2 as well
+ if (obj.turtles2.length) {
+ obj.turtles2 = [[5]].concat(obj.turtles2);
+ }
+ }
+ };
+
+ var form = await createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch: '<form>' +
+ '<field name="turtles">' +
+ '<tree editable="bottom"><field name="name" required="1"/></tree>' +
+ '</field>' +
+ '<field name="turtles2">' +
+ '<tree editable="bottom"><field name="name" required="1"/></tree>' +
+ '</field>' +
+ '</form>',
+ });
+
+ // trigger first onchange by adding a line in turtles field (should add a line in turtles2)
+ await testUtils.dom.click(form.$('.o_field_widget[name="turtles"] .o_field_x2many_list_row_add a'));
+ await testUtils.fields.editInput(form.$('.o_field_widget[name="turtles"] .o_field_widget[name="name"]'), 'ABC');
+
+ assert.containsOnce(form, '.o_field_widget[name="turtles"] .o_data_row',
+ 'line of first o2m should have been created');
+ assert.containsOnce(form, '.o_field_widget[name="turtles2"] .o_data_row',
+ 'line of second o2m should have been created');
+
+ // add a line in turtles2
+ await testUtils.dom.click(form.$('.o_field_widget[name="turtles2"] .o_field_x2many_list_row_add a'));
+ await testUtils.fields.editInput(form.$('.o_field_widget[name="turtles2"] .o_field_widget[name="name"]'), 'DEF');
+
+ assert.containsOnce(form, '.o_field_widget[name="turtles"] .o_data_row',
+ 'we should still have 1 line in turtles');
+ assert.containsN(form, '.o_field_widget[name="turtles2"] .o_data_row', 2,
+ 'we should have 2 lines in turtles2');
+ assert.hasClass(form.$('.o_field_widget[name="turtles2"] .o_data_row:nth(1)'), 'o_selected_row',
+ 'second row should be in edition');
+
+ await testUtils.form.clickSave(form);
+
+ assert.strictEqual(form.$('.o_field_widget[name="turtles2"] .o_data_row').text(), 'ABCDEF');
+
+ form.destroy();
+ });
+
});
});
});