summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/views/basic_model_tests.js
diff options
context:
space:
mode:
authorMartin Geubelle <mge@odoo.com>2017-04-19 11:04:07 +0200
committerMartin Geubelle <mge@odoo.com>2017-04-19 17:49:36 +0200
commit625a7438f09d1bde3ce2bee633347293a0195560 (patch)
tree1409bd45f3a2ac7429b7fb62e763b88cfe476c40 /addons/web/static/tests/views/basic_model_tests.js
parentf57932b932b357917844926cb9abf0f6fb19ceed (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.js32
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);