From 04eed39aa849aa25248906bd239fa396e90c72c0 Mon Sep 17 00:00:00 2001 From: "Hubert Van de Walle (huvw)" Date: Wed, 30 Aug 2023 17:00:53 +0000 Subject: [PATCH] [FIX] board: Add to dashboard no longer saves default filters When adding a view to the dashboard, we already save the domain. We don't want to save the default filters as they can have an opposite domain as the one selected, meaning no records will be matched when going to the dashboard. --- opw-3385248 closes odoo/odoo#134610 X-original-commit: 16ab99eece9b36b1bb2958bb0f8ec45cbf8b83d3 Signed-off-by: Hubert Van De Walle Signed-off-by: Aaron Bohy (aab) --- .../static/src/add_to_board/add_to_board.js | 6 +- .../static/tests/add_to_dashboard_tests.js | 69 +++++++++++++++++++ 2 files changed, 74 insertions(+), 1 deletion(-) diff --git a/addons/board/static/src/add_to_board/add_to_board.js b/addons/board/static/src/add_to_board/add_to_board.js index fb35cb5f8fc..968e4a01343 100644 --- a/addons/board/static/src/add_to_board/add_to_board.js +++ b/addons/board/static/src/add_to_board/add_to_board.js @@ -39,7 +39,11 @@ export class AddToBoard extends Component { const { comparison, context, groupBys, orderBy } = this.env.searchModel.getPreFavoriteValues(); const contextToSave = { - ...globalContext, + ...Object.fromEntries( + Object.entries(globalContext).filter( + (entry) => !entry[0].startsWith("search_default_") + ) + ), ...context, comparison, orderedBy: orderBy, diff --git a/addons/board/static/tests/add_to_dashboard_tests.js b/addons/board/static/tests/add_to_dashboard_tests.js index f0582a2e92a..95dbcdc4827 100644 --- a/addons/board/static/tests/add_to_dashboard_tests.js +++ b/addons/board/static/tests/add_to_dashboard_tests.js @@ -3,6 +3,7 @@ import { addToBoardItem } from "@board/add_to_board/add_to_board"; import { click, + editInput, getFixture, patchWithCleanup, mouseEnter, @@ -10,7 +11,9 @@ import { } from "@web/../tests/helpers/utils"; import { applyGroup, + openAddCustomFilterDialog, removeFacet, + switchView, toggleAddCustomGroup, toggleSearchBarMenu, toggleMenuItem, @@ -438,4 +441,70 @@ QUnit.module("Board", (hooks) => { await testUtils.fields.editInput(input, "Pipeline"); await triggerEvent(input, null, "keydown", { key: "Enter" }); }); + + QUnit.test("Add a view to dashboard doesn't save default filters", async function (assert) { + assert.expect(2); + + serverData.views = { + "partner,false,pivot": '', + "partner,false,list": '', + "partner,false,search": ` + + + `, + }; + + registry.category("services").add("user", makeFakeUserService()); + patchWithCleanup(browser, { setTimeout: (fn) => fn() }); // makes mouseEnter work + patchWithCleanup(odoo, { debug: true }); + + const mockRPC = (route, args) => { + if (route === "/board/add_to_dashboard") { + assert.deepEqual(args.domain, [["foo", "=", "yop"]]); + assert.deepEqual(args.context_to_save, { + pivot_measures: ["__count"], + pivot_column_groupby: [], + pivot_row_groupby: [], + orderedBy: [], + group_by: [], + dashboard_merge_domains_contexts: false, + }); + return Promise.resolve(true); + } + if (route === "/web/domain/validate") { + return true; + } + }; + + const webClient = await createWebClient({ serverData, mockRPC }); + + await doAction(webClient, { + id: 1, + res_model: "partner", + type: "ir.actions.act_window", + views: [ + [false, "list"], + [false, "pivot"], + ], + context: { search_default_filter: 1 }, + }); + + await switchView(target, "pivot"); + + // Remove default filter ['foo', '!=', 'yop'] + await removeFacet(target); + + // Add a filter ['foo', '=', 'yop'] + await toggleSearchBarMenu(target); + await openAddCustomFilterDialog(target); + await editInput(target, ".o_domain_debug_input", `[("foo", "=", "yop")]`); + await click(target.querySelector(".modal footer button")); + + // Add to dashboard + await toggleSearchBarMenu(target); + await mouseEnter(target.querySelector(".o_add_to_board .dropdown-toggle")); + const input = target.querySelector(".o_add_to_board .dropdown-menu input"); + await testUtils.fields.editInput(input, "Pipeline"); + await triggerEvent(input, null, "keydown", { key: "Enter" }); + }); });