summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/views/basic_model_tests.js
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2017-05-18 13:16:48 +0200
committerAaron Bohy <aab@odoo.com>2017-05-18 13:55:46 +0200
commit8af3d452f414135bd897026859958a9660bb5aa4 (patch)
treec195263538f06ca6d530c0a80a95aa17b1bf09c7 /addons/web/static/tests/views/basic_model_tests.js
parentf77e86b67ba8e8654d6f051239bacb0efdb8d7b1 (diff)
[FIX] web: BasicModel: read_group on selection field
When grouping on a selection field, the read_group may return a group for value false (containing records with the selection field unset, typically). When this happened, there was a crash because the BasicModel didn't handle that case (it assumed that the value of the groups was always a valid key of the selection).
Diffstat (limited to 'addons/web/static/tests/views/basic_model_tests.js')
-rw-r--r--addons/web/static/tests/views/basic_model_tests.js37
1 files changed, 37 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 5b3b04c3c37..7abce2d1fb8 100644
--- a/addons/web/static/tests/views/basic_model_tests.js
+++ b/addons/web/static/tests/views/basic_model_tests.js
@@ -772,6 +772,43 @@ QUnit.module('Views', {
model.destroy();
});
+ QUnit.test('read group when grouped by a selection field', function (assert) {
+ assert.expect(5);
+
+ this.data.partner.fields.selection = {
+ type: 'selection',
+ selection: [['a', 'A'], ['b', 'B']],
+ };
+ this.data.partner.records[0].selection = 'a';
+
+ var model = createModel({
+ Model: BasicModel,
+ data: this.data,
+ });
+ var params = {
+ modelName: 'partner',
+ fields: this.data.partner.fields,
+ fieldNames: ['foo'],
+ groupedBy: ['selection'],
+ };
+
+ model.load(params).then(function (resultID) {
+ var dataPoint = model.get(resultID);
+ assert.strictEqual(dataPoint.data.length, 2, "should have two groups");
+
+ var groupFalse = _.findWhere(dataPoint.data, {value: false});
+ assert.ok(groupFalse, "should have a group for value false");
+ assert.deepEqual(groupFalse.domain, [['selection', '=', false]],
+ "group's domain should be correct");
+
+ var groupA = _.findWhere(dataPoint.data, {value: 'A'});
+ assert.ok(groupA, "should have a group for value 'a'");
+ assert.deepEqual(groupA.domain, [['selection', '=', 'a']],
+ "group's domain should be correct");
+ });
+ model.destroy();
+ });
+
QUnit.test('create record, then save', function (assert) {
assert.expect(5);