diff --git a/addons/web/static/src/search/search_bar/search_bar.js b/addons/web/static/src/search/search_bar/search_bar.js index 0196f63af3d..16a2426a081 100644 --- a/addons/web/static/src/search/search_bar/search_bar.js +++ b/addons/web/static/src/search/search_bar/search_bar.js @@ -189,7 +189,8 @@ export class SearchBar extends Component { // Pass } } - const options = await this.orm.call(field.relation, "name_search", domain, { + const options = await this.orm.call(field.relation, "name_search", [], { + args: domain, context: field.context, limit: 8, name: query.trim(), diff --git a/addons/web/static/tests/search/search_bar_tests.js b/addons/web/static/tests/search/search_bar_tests.js index 9c0d06df15b..239f54679f2 100644 --- a/addons/web/static/tests/search/search_bar_tests.js +++ b/addons/web/static/tests/search/search_bar_tests.js @@ -38,6 +38,7 @@ QUnit.module("Search", (hooks) => { birth_datetime: { string: "Birth DateTime", type: "datetime" }, foo: { string: "Foo", type: "char" }, bool: { string: "Bool", type: "boolean" }, + company: { string: "Company", type: "many2one", relation: "partner" }, }, records: [ { @@ -57,6 +58,7 @@ QUnit.module("Search", (hooks) => { bool: false, birthday: "1982-06-04", birth_datetime: "1982-06-04 02:00:00", + company: 1, }, { id: 3, @@ -66,6 +68,7 @@ QUnit.module("Search", (hooks) => { bool: false, birthday: "1985-09-13", birth_datetime: "1985-09-13 03:00:00", + company: 5, }, { id: 4, @@ -96,6 +99,7 @@ QUnit.module("Search", (hooks) => { + @@ -315,8 +319,8 @@ QUnit.module("Search", (hooks) => { assert.containsN( target, ".o_searchview_autocomplete li", - 2, - "there should be 2 result for 'a' in search bar autocomplete" + 3, + "there should be 3 result for 'a' in search bar autocomplete" ); const searchInput = target.querySelector(".o_searchview input"); @@ -947,4 +951,51 @@ QUnit.module("Search", (hooks) => { await validateSearch(target); assert.deepEqual(getDomain(controlPanel), [["foo", "ilike", "1a"]]); }); + + QUnit.test("check kwargs of a rpc call with a domain", async function (assert) { + assert.expect(3); + + const mockRPC = async (route, args) => { + if (route.includes("/partner/name_search")) { + assert.deepEqual(args, { + model: "partner", + method: "name_search", + args: [], + kwargs: { + args: [["bool", "=", true]], + context: { lang: "en", uid: 7, tz: "taht" }, + limit: 8, + name: "F", + }, + }); + } + }; + + const controlPanel = await makeWithSearch({ + serverData, + mockRPC, + resModel: "partner", + Component: ControlPanel, + searchMenuTypes: [], + searchViewId: false, + }); + + await editSearch(target, "F"); + assert.containsN( + target, + ".o_searchview_autocomplete li", + 3, + "there should be 3 result for 'F' in search bar autocomplete" + ); + + const searchInput = target.querySelector(".o_searchview input"); + await triggerEvent(searchInput, null, "keydown", { key: "ArrowDown" }); + await triggerEvent(searchInput, null, "keydown", { key: "ArrowDown" }); + await triggerEvent(searchInput, null, "keydown", { key: "ArrowRight" }); + await triggerEvent(searchInput, null, "keydown", { key: "ArrowDown" }); + await triggerEvent(searchInput, null, "keydown", { key: "ArrowDown" }); + await triggerEvent(searchInput, null, "keydown", { key: "ArrowDown" }); + await triggerEvent(searchInput, null, "keydown", { key: "Enter" }); + assert.deepEqual(getDomain(controlPanel), [["company", "=", 5]]); + }); });