diff options
| author | Aaron Bohy <aab@odoo.com> | 2019-03-27 13:38:46 +0000 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2019-04-02 11:57:00 +0000 |
| commit | ca19b17fd3e09d2f4e53208542f4356d3a6ee25a (patch) | |
| tree | 63b092ff0681647cfeba79db64bca051ca45ed0c /addons/web/static/tests | |
| parent | d0164d834bb18f37f15a129e911f7d8e1c54b7c3 (diff) | |
[IMP] web: fetch records alongside read_group
This rev. adds params to the 'web_read_group' method, allowing to
search_read records inside each groups in a single RPC, instead of
doing a 'web_read_group' RPC followed by n 'search_read' RPCs,
where n is the number of opened groups.
Part of task 1915702
Diffstat (limited to 'addons/web/static/tests')
| -rw-r--r-- | addons/web/static/tests/helpers/mock_server.js | 19 | ||||
| -rw-r--r-- | addons/web/static/tests/views/list_tests.js | 16 |
2 files changed, 22 insertions, 13 deletions
diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js index 0eb54bd3e0b..b1427ecb6f4 100644 --- a/addons/web/static/tests/helpers/mock_server.js +++ b/addons/web/static/tests/helpers/mock_server.js @@ -1209,9 +1209,26 @@ var MockServer = Class.extend({ * @param {boolean} kwargs.lazy still mostly ignored * @param {integer} [kwargs.limit] * @param {integer} [kwargs.offset] + * @param {boolean} [kwargs.expand=false] if true, read records inside each + * group + * @param {integer} [kwargs.expand_limit] + * @param {integer} [kwargs.expand_orderby] * @returns {Object[]} */ _mockWebReadGroup: function (model, kwargs) { + var self = this; + var groups = this._mockReadGroup(model, kwargs); + if (kwargs.expand && kwargs.groupby.length === 1) { + groups.forEach(function (group) { + group.__data = self._mockSearchReadController({ + domain: group.__domain, + model: model, + fields: kwargs.fields, + limit: kwargs.expand_limit, + order: kwargs.expand_orderby, + }); + }); + } var allGroups = this._mockReadGroup(model, { domain: kwargs.domain, fields: ['display_name'], @@ -1219,7 +1236,7 @@ var MockServer = Class.extend({ lazy: kwargs.lazy, }); return { - groups: this._mockReadGroup(model, kwargs), + groups: groups, length: allGroups.length, }; }, diff --git a/addons/web/static/tests/views/list_tests.js b/addons/web/static/tests/views/list_tests.js index d4efb3154a4..a275f3602f7 100644 --- a/addons/web/static/tests/views/list_tests.js +++ b/addons/web/static/tests/views/list_tests.js @@ -4471,7 +4471,7 @@ QUnit.module('Views', { }); QUnit.test('grouped list with expand attribute', async function (assert) { - assert.expect(6); + assert.expect(5); var list = await createView({ View: ListView, @@ -4487,11 +4487,10 @@ QUnit.module('Views', { assert.containsN(list, '.o_group_header', 2); assert.containsN(list, '.o_data_row', 4); + assert.strictEqual(list.$('.o_data_cell').text(), 'yopblipgnapblip'); assert.verifySteps([ - 'web_read_group', - '/web/dataset/search_read', - '/web/dataset/search_read', + 'web_read_group', // records are fetched alongside groups ]); list.destroy(); @@ -4525,13 +4524,12 @@ QUnit.module('Views', { }); QUnit.test('grouped lists with expand attribute and a lot of groups', async function (assert) { - assert.expect(10); + assert.expect(8); for (var i = 0; i < 15; i++) { this.data.foo.records.push({foo: 'record ' + i, int_field: i}); } - var nbSearchRead = 0; var list = await createView({ View: ListView, model: 'foo', @@ -4542,24 +4540,18 @@ QUnit.module('Views', { if (args.method === 'web_read_group') { assert.step(args.method); } - if (route === '/web/dataset/search_read') { - nbSearchRead++; - } return this._super.apply(this, arguments); }, }); assert.containsN(list, '.o_group_header', 10); // page 1 assert.containsN(list, '.o_data_row', 11); // one group contains two records - assert.strictEqual(nbSearchRead, 10); assert.containsOnce(list, '.o_pager_counter'); // has a pager - nbSearchRead = 0; await testUtils.dom.click(list.$('.o_pager_next')); // switch to page 2 assert.containsN(list, '.o_group_header', 7); // page 2 assert.containsN(list, '.o_data_row', 7); - assert.strictEqual(nbSearchRead, 7); assert.verifySteps([ 'web_read_group', // read_group page 1 |
