summaryrefslogtreecommitdiff
path: root/addons/web/static/tests
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2019-03-27 13:38:46 +0000
committerAaron Bohy <aab@odoo.com>2019-04-02 11:57:00 +0000
commitca19b17fd3e09d2f4e53208542f4356d3a6ee25a (patch)
tree63b092ff0681647cfeba79db64bca051ca45ed0c /addons/web/static/tests
parentd0164d834bb18f37f15a129e911f7d8e1c54b7c3 (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.js19
-rw-r--r--addons/web/static/tests/views/list_tests.js16
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