diff options
| author | Aaron Bohy <aab@odoo.com> | 2017-05-18 13:16:48 +0200 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2017-05-18 13:55:46 +0200 |
| commit | 8af3d452f414135bd897026859958a9660bb5aa4 (patch) | |
| tree | c195263538f06ca6d530c0a80a95aa17b1bf09c7 /addons/web/static/tests/views/basic_model_tests.js | |
| parent | f77e86b67ba8e8654d6f051239bacb0efdb8d7b1 (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.js | 37 |
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); |
