summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/views
diff options
context:
space:
mode:
authorfwi-odoo <fwi@odoo.com>2017-09-30 14:28:42 +0200
committerfwi-odoo <fwi@odoo.com>2017-09-30 15:11:39 +0200
commitd9ffd5204d7826dcdcb026e828867f6ea3d95755 (patch)
treef8278dcdc0b70204fe7e199416a0e582693ef7bd /addons/web/static/tests/views
parent236742cb0e526d974dcf744544c8088c27f9d018 (diff)
[FIX] web: correctly apply onchange on boolean field
When an onchange sets a boolean field to 'true', if this boolean was set to 'false' previously, the old value was used instead of 'false'.
Diffstat (limited to 'addons/web/static/tests/views')
-rw-r--r--addons/web/static/tests/views/basic_model_tests.js43
1 files changed, 43 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 efbbb276aef..65962870be7 100644
--- a/addons/web/static/tests/views/basic_model_tests.js
+++ b/addons/web/static/tests/views/basic_model_tests.js
@@ -2123,4 +2123,47 @@ QUnit.module('Views', {
model.destroy();
});
+ QUnit.test('onchange on a boolean field', function (assert) {
+ assert.expect(2);
+
+ var newFields = {
+ foobool: {
+ type: 'boolean',
+ string: 'foobool',
+ },
+ foobool2: {
+ type: 'boolean',
+ string: 'foobool2',
+ },
+ };
+ _.extend(this.data.partner.fields, newFields);
+
+ this.data.partner.onchanges.foobool = function (obj) {
+ if (obj.foobool) {
+ obj.foobool2 = true;
+ }
+ };
+
+ this.data.partner.records[0].foobool = false;
+ this.data.partner.records[0].foobool2 = true;
+
+ this.params.res_id = 1;
+ this.params.fieldNames = ['foobool', 'foobool2'];
+ this.params.fields = this.data.partner.fields;
+ var model = createModel({
+ Model: BasicModel,
+ data: this.data,
+ });
+
+ model.load(this.params).then(function (resultID) {
+ var record = model.get(resultID);
+ model.notifyChanges(resultID, {foobool2: false});
+ record = model.get(resultID);
+ assert.strictEqual(record.data.foobool2, false, "foobool2 field should be false");
+ model.notifyChanges(resultID, {foobool: true});
+ record = model.get(resultID);
+ assert.strictEqual(record.data.foobool2, true, "foobool2 field should be true");
+ });
+ model.destroy();
+ });
});});