From 74f55ac035fed810d4f530f33264dd0262893f3e Mon Sep 17 00:00:00 2001 From: tsm-odoo Date: Wed, 9 Mar 2022 10:22:47 +0000 Subject: [PATCH] [IMP] mail: change relation of partner_id field MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit helps reducing the noise of the model definition PR. Indeed, the partner_id field on the mail.follower model was mocked as an integer field. The /mail/thread/data route returns an integer. But the search read method returns an array for many2one fields [id, display_name]. Thus, using the real server field will result in an incorrect behavior. task-2767820 closes odoo/odoo#86096 Related: odoo/enterprise#25125 Signed-off-by: Sébastien Theys (seb) --- .../chatter_topbar/tests/chatter_topbar_tests.js | 9 +++++---- .../follower_list_menu/tests/follower_list_menu_tests.js | 2 +- addons/mail/static/tests/helpers/mock_models.js | 2 +- addons/mail/static/tests/helpers/mock_server.js | 3 +++ 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/addons/mail/static/src/components/chatter_topbar/tests/chatter_topbar_tests.js b/addons/mail/static/src/components/chatter_topbar/tests/chatter_topbar_tests.js index ad29e8c8cd9..6ab55921e11 100644 --- a/addons/mail/static/src/components/chatter_topbar/tests/chatter_topbar_tests.js +++ b/addons/mail/static/src/components/chatter_topbar/tests/chatter_topbar_tests.js @@ -403,10 +403,11 @@ QUnit.test('composer state conserved when clicking on another topbar button', as QUnit.test('rendering with multiple partner followers', async function (assert) { assert.expect(7); - this.data['res.partner'].records.push({ - id: 100, - message_follower_ids: [1, 2], - }); + this.data['res.partner'].records.push( + { id: 11 }, + { id: 12 }, + { id: 100, message_follower_ids: [1, 2] }, + ); this.data['mail.followers'].records.push( { // simulate real return from RPC diff --git a/addons/mail/static/src/components/follower_list_menu/tests/follower_list_menu_tests.js b/addons/mail/static/src/components/follower_list_menu/tests/follower_list_menu_tests.js index 4d90a760f04..1978e4dcac9 100644 --- a/addons/mail/static/src/components/follower_list_menu/tests/follower_list_menu_tests.js +++ b/addons/mail/static/src/components/follower_list_menu/tests/follower_list_menu_tests.js @@ -148,7 +148,7 @@ QUnit.test('click on "add followers" button', async function (assert) { partner.message_follower_ids.push(1); payload.options.on_close(); }); - this.data['res.partner'].records.push({ id: 100 }); + this.data['res.partner'].records.push({ id: 100 }, { id: 42 }); this.data['mail.followers'].records.push({ partner_id: 42, email: "bla@bla.bla", diff --git a/addons/mail/static/tests/helpers/mock_models.js b/addons/mail/static/tests/helpers/mock_models.js index c38626864c2..380aa632d40 100644 --- a/addons/mail/static/tests/helpers/mock_models.js +++ b/addons/mail/static/tests/helpers/mock_models.js @@ -117,7 +117,7 @@ export class MockModels { is_active: { type: 'boolean' }, is_editable: { type: 'boolean' }, name: { type: 'char' }, - partner_id: { type: 'integer' }, + partner_id: { relation: 'res.partner', type: 'many2one' }, res_id: { type: 'many2one_reference' }, res_model: { type: 'char' }, subtype_ids: { type: 'many2many', relation: 'mail.message.subtype' } diff --git a/addons/mail/static/tests/helpers/mock_server.js b/addons/mail/static/tests/helpers/mock_server.js index 1c9f45d7e25..e99ac3d580c 100644 --- a/addons/mail/static/tests/helpers/mock_server.js +++ b/addons/mail/static/tests/helpers/mock_server.js @@ -541,6 +541,9 @@ MockServer.include({ ['res_id', '=', thread.id], ['res_model', '=', thread_model], ]], {}); + // search read returns many2one relations as an array [id, display_name]. + // But the original route does not. Thus, we need to change it now. + followers.forEach(follower => follower.partner_id = follower.partner_id[0]); res['followers'] = followers; } if (request_list.includes('suggestedRecipients')) {