diff --git a/addons/web/static/src/views/fields/many2one/many2one_field.js b/addons/web/static/src/views/fields/many2one/many2one_field.js index 174263bceb3..5dfd143c011 100644 --- a/addons/web/static/src/views/fields/many2one/many2one_field.js +++ b/addons/web/static/src/views/fields/many2one/many2one_field.js @@ -115,9 +115,10 @@ export class Many2OneField extends Component { onRecordSaved: async (record) => { const resId = this.value[0]; const fields = ["display_name"]; - const { context } = this.props; // use unity read + relatedFields from Field Component - const records = await this.orm.read(this.relation, [resId], fields, { context }); + const records = await this.orm.read(this.relation, [resId], fields, { + context: this.context, + }); await this.updateRecord(m2oTupleFromData(records[0])); }, onClose: () => this.focusInput(), 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 f3142597a97..17a3cbe479a 100644 --- a/addons/web/static/tests/views/fields/many2one_field_tests.js +++ b/addons/web/static/tests/views/fields/many2one_field_tests.js @@ -378,16 +378,22 @@ QUnit.module("Fields", (hooks) => { arch: `
`, - mockRPC(route, { method }) { + mockRPC(route, { args, method, model, kwargs }) { if (method === "get_formview_id") { return Promise.resolve(false); } if (method === "web_save") { assert.step("web_save"); } + if (method === "read" && model === "partner" && args[0][0] === 4) { + assert.step(`read partner: ${args[1]}`); + assert.strictEqual(kwargs.context.blip, 10); + assert.strictEqual(kwargs.context.blop, 3); + } }, }); @@ -402,7 +408,7 @@ QUnit.module("Fields", (hooks) => { // save and close modal await clickSave(target.querySelectorAll(".modal")[1]); - assert.verifySteps(["web_save"]); + assert.verifySteps(["web_save", "read partner: display_name"]); // save form await clickSave(target); assert.verifySteps([]); @@ -4572,21 +4578,16 @@ QUnit.module("Fields", (hooks) => { `, mockRPC(route, { method, kwargs }) { if (method === "name_search") { - return Promise.resolve([ - [1, false] - ]); + return Promise.resolve([[1, false]]); } }, }); const input = target.querySelector(".o_field_many2one input"); await click(input); - + await triggerEvents(input, null, ["input", "change"]); - let dropdown = target.querySelector(".o_field_many2one[name='trululu'] .dropdown-menu") - assert.strictEqual( - dropdown.querySelector("a.dropdown-item").text, - "Unnamed" - ); + const dropdown = target.querySelector(".o_field_many2one[name='trululu'] .dropdown-menu"); + assert.strictEqual(dropdown.querySelector("a.dropdown-item").text, "Unnamed"); }); });