diff --git a/addons/web/static/src/views/fields/relational_utils.js b/addons/web/static/src/views/fields/relational_utils.js index 07c22e14244..5c520847bf5 100644 --- a/addons/web/static/src/views/fields/relational_utils.js +++ b/addons/web/static/src/views/fields/relational_utils.js @@ -223,7 +223,7 @@ export class Many2XAutocomplete extends Component { const options = records.map((result) => ({ value: result[0], - label: result[1], + label: result[1].split("\n")[0], })); if (this.props.quickCreate && request.length) { diff --git a/addons/web/static/tests/views/fields/many2one_field_tests.js b/addons/web/static/tests/views/fields/many2one_field_tests.js index 75cb96140a3..d7edf34b600 100644 --- a/addons/web/static/tests/views/fields/many2one_field_tests.js +++ b/addons/web/static/tests/views/fields/many2one_field_tests.js @@ -1321,6 +1321,68 @@ QUnit.module("Fields", (hooks) => { assert.verifySteps(["search: ", "search: ", "search: p", "search: p"]); }); + QUnit.test("many2one search with server returning multiple lines", async function (assert) { + const namegets = { + 2: "fizz\nbuzz\nfizzbuzz", + 4: "aaa\nAAA\nRecord", + }; + + await makeView({ + type: "form", + resModel: "partner", + resId: 1, + serverData, + arch: ` +
`, + mockRPC(route, { args, kwargs, method }) { + if (method === "name_get") { + assert.step(method); + return args.map((id) => [id, namegets[id]]); + } + if (method === "name_search") { + assert.step(method); + return Object.keys(namegets).map((id) => [id, namegets[id]]); + } + }, + }); + assert.verifySteps(["name_get"]); + + const input = target.querySelector(".o_field_widget input"); + + // Initial value + assert.strictEqual(input.value, "aaa"); + assert.strictEqual( + target.querySelector(".o_field_many2one_extra").innerHTML, + "AAA