diff options
| author | Martin Geubelle <mge@odoo.com> | 2017-04-19 11:04:07 +0200 |
|---|---|---|
| committer | Martin Geubelle <mge@odoo.com> | 2017-04-19 17:49:36 +0200 |
| commit | 625a7438f09d1bde3ce2bee633347293a0195560 (patch) | |
| tree | 1409bd45f3a2ac7429b7fb62e763b88cfe476c40 /addons/web/static/tests/views/basic_model_tests.js | |
| parent | f57932b932b357917844926cb9abf0f6fb19ceed (diff) | |
[FIX] web: do not apply impossible onchanges
Before this commit, all onchanges were applied if the field
was known on the model.
However it's not possible to apply onchanges on x2many not in
the view as we don't know their fieldsInfo.
Diffstat (limited to 'addons/web/static/tests/views/basic_model_tests.js')
| -rw-r--r-- | addons/web/static/tests/views/basic_model_tests.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/addons/web/static/tests/views/basic_model_tests.js b/addons/web/static/tests/views/basic_model_tests.js index 6f34b34919c..0cfbf36983e 100644 --- a/addons/web/static/tests/views/basic_model_tests.js +++ b/addons/web/static/tests/views/basic_model_tests.js @@ -221,6 +221,38 @@ QUnit.module('Views', { model.destroy(); }); + QUnit.test('onchange on a one2many not in view (fieldNames)', function (assert) { + assert.expect(6); + + this.data.partner.onchanges.foo = function (obj) { + obj.bar = obj.foo.length; + obj.product_ids = []; + }; + + this.params.fieldNames = ['foo']; + + var model = createModel({ + Model: BasicModel, + data: this.data, + }); + + model.load(this.params).then(function (resultID) { + var record = model.get(resultID); + assert.strictEqual(record.data.foo, 'gnap', "foo field is properly initialized"); + assert.strictEqual(record.data.bar, undefined, "bar field is not loaded"); + assert.strictEqual(record.data.product_ids, undefined, "product_ids field is not loaded"); + + model.notifyChanges(resultID, {foo: 'mary poppins'}); + + record = model.get(resultID); + assert.strictEqual(record.data.foo, 'mary poppins', "onchange has been applied"); + assert.strictEqual(record.data.bar, 12, "onchange has been applied"); + assert.strictEqual(record.data.product_ids, undefined, + "onchange on product_ids (one2many) has not been applied"); + }); + model.destroy(); + }); + QUnit.test('notifyChange on a many2one, without display_name', function (assert) { assert.expect(3); |
