From 8981338ff23246ffeddebd82eb837e3f24a0a923 Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Mon, 22 Apr 2024 13:04:53 +0000 Subject: [PATCH] [FIX] web: restore offset in grouped list Issue: Have a grouped list view with several pages, go to the next page, open a group and click on a record to open it in form view. Click on the breadcrumb to go back to the list: the offset is lost, and we're back in page 1. After this commit, the offset is correctly kept. opw~3851390 closes odoo/odoo#162969 X-original-commit: 8dbf154fdbbff7790c99b3f91d3c1896d436a346 Signed-off-by: Simon Genin (ges@odoo) Signed-off-by: Aaron Bohy (aab) --- .../web/static/tests/views/list_view_tests.js | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/addons/web/static/tests/views/list_view_tests.js b/addons/web/static/tests/views/list_view_tests.js index 7a488c02c63..4a5fb766b2b 100644 --- a/addons/web/static/tests/views/list_view_tests.js +++ b/addons/web/static/tests/views/list_view_tests.js @@ -7041,6 +7041,47 @@ QUnit.module("Views", (hooks) => { } ); + QUnit.test("grouped list keeps offset on switchView", async (assert) => { + assert.expect(8); + serverData.views = { + "foo,false,search": ` + + + `, + "foo,99,list": ``, + "foo,100,form": `
`, + }; + + const offsets = [0, 1, 1]; + const mockRPC = async (route, args) => { + if (args.method === "web_read_group") { + assert.strictEqual(args.kwargs.offset, offsets.shift()); + } + }; + const wc = await createWebClient({ serverData, mockRPC }); + await doAction(wc, { + res_model: "foo", + type: "ir.actions.act_window", + views: [ + [99, "list"], + [100, "form"], + ], + context: { + search_default_groupby: true, + }, + }); + + assert.containsOnce(target, ".o_list_view"); + await click(target, ".o_pager_next"); + assert.containsNone(target, ".o_data_row"); + await click(target, ".o_group_header"); + assert.containsOnce(target, ".o_data_row"); + await click(target, ".o_data_cell"); + assert.containsOnce(target, ".o_form_view"); + await click(target, ".o_back_button"); + assert.containsOnce(target, ".o_data_row"); + }); + QUnit.test("can sort records when clicking on header", async function (assert) { serverData.models.foo.fields.foo.sortable = true;