From 88340cc2fbbfbd3a6a263b73f5cf6964891b800c Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Wed, 30 Jun 2021 11:54:06 +0000 Subject: [PATCH] [FIX] web: debug: allow to edit SearchView MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before this commit, clicking on "Edit ControlPanelView" in the debug manager actually edited the "main" view (e.g. kanban), because we used the wrong view id. This commit also renames "Edit ControlPanelView" into "Edit SearchView", which is more accurate w.r.t. to the view type. closes odoo/odoo#72995 Signed-off-by: Géry Debongnie (ged) --- addons/web/static/src/legacy/debug_manager.js | 8 ++-- .../tests/core/debug/debug_manager_tests.js | 39 ++++++++++++++++++- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/addons/web/static/src/legacy/debug_manager.js b/addons/web/static/src/legacy/debug_manager.js index 242272c1f0f..e712eb92630 100644 --- a/addons/web/static/src/legacy/debug_manager.js +++ b/addons/web/static/src/legacy/debug_manager.js @@ -416,16 +416,16 @@ export function editView({ accessRights, action, component, env }) { }; } -function editControlPanelView({ accessRights, component, env }) { +export function editSearchView({ accessRights, component, env }) { if (!accessRights.canEditView) { return null; } - const description = env._t("Edit ControlPanelView"); + const description = env._t("Edit SearchView"); return { type: "item", description, callback: () => { - editModelDebug(env, description, "ir.ui.view", component.props.viewInfo.view_id); + editModelDebug(env, description, "ir.ui.view", component.props.viewParams.controlPanelFieldsView.view_id); }, sequence: 360, }; @@ -516,7 +516,7 @@ debugRegistry .add("viewSeparator", viewSeparator) .add("fieldsViewGet", fieldsViewGet) .add("editView", editView) - .add("editControlPanelView", editControlPanelView); + .add("editSearchView", editSearchView); debugRegistry .category("form") diff --git a/addons/web/static/tests/core/debug/debug_manager_tests.js b/addons/web/static/tests/core/debug/debug_manager_tests.js index 1b9cdaf1c76..fb5f9638794 100644 --- a/addons/web/static/tests/core/debug/debug_manager_tests.js +++ b/addons/web/static/tests/core/debug/debug_manager_tests.js @@ -15,7 +15,7 @@ import { makeFakeDialogService, makeFakeLocalizationService } from "../../helper import { click, getFixture, legacyExtraNextTick, patchWithCleanup } from "../../helpers/utils"; import { createWebClient, doAction, getActionManagerServerData } from "../../webclient/helpers"; import { openViewItem } from "@web/core/debug/debug_menu_items"; -import { editView } from "@web/legacy/debug_manager"; +import { editView, editSearchView } from "@web/legacy/debug_manager"; const { Component, hooks, mount, tags } = owl; const { useSubEnv } = hooks; @@ -340,4 +340,41 @@ QUnit.module("DebugMenu", (hooks) => { "18" ); }); + + QUnit.test("can edit a search view", async (assert) => { + const mockRPC = async (route, args) => { + if (args.method === "check_access_rights") { + return Promise.resolve(true); + } + }; + prepareRegistriesWithCleanup(); + + patchWithCleanup(odoo, { + debug: true, + }); + + registry.category("debug").add("editSearchViewItem", editSearchView); + registry.category("services").add("debug", debugService); + + const serverData = getActionManagerServerData(); + + serverData.views["partner,293,search"] = ""; + serverData.actions[1].search_view_id = [293, "some_search_view"]; + serverData.models["ir.ui.view"] = { + fields: {}, + records: [{ id: 293 }], + }; + serverData.views["ir.ui.view,false,form"] = `
`; + + const webClient = await createWebClient({ serverData, mockRPC }); + await doAction(webClient, 1); + await click(webClient.el.querySelector(".o_debug_manager button")); + await click(webClient.el.querySelector(".o_debug_manager .o_dropdown_item")); + await legacyExtraNextTick(); + assert.containsOnce(webClient, ".modal .o_form_view"); + assert.strictEqual( + webClient.el.querySelector(".modal .o_form_view .o_field_widget[name=id]").value, + "293" + ); + }); });