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" }); + }); });