diff options
| author | Aaron Bohy <aab@odoo.com> | 2017-09-30 10:50:41 +0200 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2017-09-30 15:59:24 +0200 |
| commit | 776bac6a069fc1ef2d6bea0e85a0737e3cefecef (patch) | |
| tree | c54fcc05989722a9acd1ab4ada8e3ad013dbc93d /addons/web/static/tests/fields/relational_fields_tests.js | |
| parent | 16eb262c60a3b46f89cb706504a8c2d3dc755e08 (diff) | |
[FIX] web: don't discard x2many rows coming from default_get
Problem occured in the MRP Production wizard (with a consumed
product tracked by serial number). The opened record is a new
record, and its one2many has 2 default rows that are prefilled.
If the user edited one of the quantities in those rows, and set
an invalid value instead (e.g. a letter), the row was removed
without notice when it was focused out. This was because the
model wasn't aware that a change has been done on the record,
and as the record was flagged as new, it was simply abandonned.
Diffstat (limited to 'addons/web/static/tests/fields/relational_fields_tests.js')
| -rw-r--r-- | addons/web/static/tests/fields/relational_fields_tests.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js index 486fa22d56c..a96e21cc443 100644 --- a/addons/web/static/tests/fields/relational_fields_tests.js +++ b/addons/web/static/tests/fields/relational_fields_tests.js @@ -6168,6 +6168,42 @@ QUnit.module('relational_fields', { form.destroy(); }); + QUnit.test('one2many with default value: edit line to make it invalid', function (assert) { + assert.expect(3); + + this.data.partner.fields.p.default = [ + [0, false, {foo: "coucou", int_field: 5}], + ]; + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch:'<form string="Partners">' + + '<field name="p">' + + '<tree editable="bottom">' + + '<field name="foo"/>' + + '<field name="int_field"/>' + + '</tree>' + + '</field>' + + '</form>', + }); + + // edit the line and enter an invalid value for int_field + form.$('.o_data_row .o_data_cell:nth(1)').click(); + form.$('.o_field_widget[name=int_field]').val('e').trigger('input'); + form.$el.click(); // try to validate the line + + assert.strictEqual(form.$('.o_data_row.o_selected_row').length, 1, + "line should not have been removed and should still be in edition"); + assert.strictEqual($('.modal').length, 1, + "a confirmation dialog should be opened"); + assert.ok(form.$('.o_field_widget[name=int_field]').hasClass('o_field_invalid'), + "should indicate that int_field is invalid"); + + form.destroy(); + }); + QUnit.module('FieldMany2Many'); QUnit.test('many2many kanban: edition', function (assert) { |
