diff --git a/addons/web/static/src/core/orm_service.js b/addons/web/static/src/core/orm_service.js index fea150e4452..8c3024c487d 100644 --- a/addons/web/static/src/core/orm_service.js +++ b/addons/web/static/src/core/orm_service.js @@ -129,9 +129,9 @@ export class ORM { } readGroup(model, domain, fields, groupby, options = {}, ctx = {}) { + validateArray("domain", domain); validatePrimitiveList("fields", "string", fields); validatePrimitiveList("groupby", "string", groupby); - validateArray("domain", domain); const kwargs = { domain, groupby, @@ -139,7 +139,7 @@ export class ORM { context: ctx, }; assignOptions(kwargs, options, ["lazy", "offset", "orderby", "limit"]); - return this.call(model, "web_read_group", [], kwargs); + return this.call(model, "read_group", [], kwargs); } search(model, domain, options = {}, ctx = {}) { @@ -169,6 +169,20 @@ export class ORM { return this.call(model, "unlink", [ids], { context: ctx }); } + webReadGroup(model, domain, fields, groupby, options = {}, ctx = {}) { + validateArray("domain", domain); + validatePrimitiveList("fields", "string", fields); + validatePrimitiveList("groupby", "string", groupby); + const kwargs = { + domain, + groupby, + fields, + context: ctx, + }; + assignOptions(kwargs, options, ["lazy", "offset", "orderby", "limit"]); + return this.call(model, "web_read_group", [], kwargs); + } + webSearchRead(model, domain, fields, options = {}, ctx = {}) { validateArray("domain", domain); validatePrimitiveList("fields", "string", fields); diff --git a/addons/web/static/tests/core/orm_service_tests.js b/addons/web/static/tests/core/orm_service_tests.js index c8e7d11fcc2..12843cd3179 100644 --- a/addons/web/static/tests/core/orm_service_tests.js +++ b/addons/web/static/tests/core/orm_service_tests.js @@ -155,11 +155,11 @@ QUnit.test("write method", async (assert) => { }); }); -QUnit.test("readGroup method", async (assert) => { +QUnit.test("webReadGroup method", async (assert) => { const [query, rpc] = makeFakeRPC(); serviceRegistry.add("rpc", rpc); const env = await makeTestEnv(); - await env.services.orm.readGroup( + await env.services.orm.webReadGroup( "sale.order", [["user_id", "=", 2]], ["amount_total:sum"], @@ -185,6 +185,36 @@ QUnit.test("readGroup method", async (assert) => { }); }); +QUnit.test("readGroup method", async (assert) => { + const [query, rpc] = makeFakeRPC(); + serviceRegistry.add("rpc", rpc); + const env = await makeTestEnv(); + await env.services.orm.readGroup( + "sale.order", + [["user_id", "=", 2]], + ["amount_total:sum"], + ["date_order"], + { offset: 1 } + ); + assert.strictEqual(query.route, "/web/dataset/call_kw/sale.order/read_group"); + assert.deepEqual(query.params, { + args: [], + kwargs: { + domain: [["user_id", "=", 2]], + fields: ["amount_total:sum"], + groupby: ["date_order"], + context: { + lang: "en", + uid: 7, + tz: "taht", + }, + offset: 1, + }, + method: "read_group", + model: "sale.order", + }); +}); + QUnit.test("searchRead method", async (assert) => { const [query, rpc] = makeFakeRPC(); serviceRegistry.add("rpc", rpc);