[FIX] mail: _get_recipient_data return groups for pids

Note: fix not necessary since odoo/odoo@https://github.com/odoo/odoo/commit/a62927e7e2d7df4047f8606b41e70ef61ac29b73 landed in master. This
forward port contains only the test.

Step to reproduce:
- Go to a project with visibility set on 'Invited portal users and all internal users'
- Go a task
- Send an follow invitation to Marc Demo (an internal user)

Intended behavior:
The mail has a 'View task button'

Current behavior:
No view task button

This behaviour is due to the function _get_recipient_data which is supposed to return groups when given pids but doesn't.

See _get_recipient_data docstring.

opw-2727410

closes odoo/odoo#83594

X-original-commit: d113cb6398806a1a744085d041b73b827f9f4ada
Signed-off-by: Damhaut Florian (flda) <flda@odoo.com>
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
This commit is contained in:
Florian Damhaut
2022-02-01 09:54:17 +00:00
committed by Thibault Delavallée
parent 9311b087e1
commit ac98d89a98
+19 -4
View File
@@ -458,9 +458,13 @@ class RecipientsNotificationTest(TestMailCommon):
def assertRecipientsData(self, recipients_data, records, partners, partner_to_users=None):
""" Custom assert as recipients structure is custom and may change due
to some implementation choice. """
self.assertEqual(set(recipients_data.keys()), set(records.ids))
for record in records:
record_data = recipients_data[record.id]
if records:
self.assertEqual(set(recipients_data.keys()), set(records.ids))
record_ids = records.ids
else:
records, record_ids = [False], [0]
for record, record_id in zip(records, record_ids):
record_data = recipients_data[record_id]
self.assertEqual(set(record_data.keys()), set(partners.ids))
for partner in partners:
partner_data = record_data[partner.id]
@@ -479,7 +483,10 @@ class RecipientsNotificationTest(TestMailCommon):
self.assertEqual(partner_data['groups'], set())
self.assertEqual(partner_data['notif'], 'email')
self.assertFalse(partner_data['uid'])
self.assertEqual(partner_data['is_follower'], partner in record.message_partner_ids)
if record:
self.assertEqual(partner_data['is_follower'], partner in record.message_partner_ids)
else:
self.assertFalse(partner_data['is_follower'])
self.assertEqual(partner_data['share'], partner.partner_share)
self.assertEqual(partner_data['ushare'], user.share)
@@ -675,3 +682,11 @@ class RecipientsNotificationTest(TestMailCommon):
pids=(self.env.user.partner_id + self.partner_admin).ids
)
self.assertRecipientsData(recipients_data, test_records, self.env.user.partner_id + self.partner_admin)
# on mail.thread, False everywhere: pathologic case
test_partners = self.partner_admin + self.partner_employee + self.common_partner
recipients_data = self.env['mail.followers']._get_recipient_data(
self.env['mail.thread'], False, False,
pids=test_partners.ids
)
self.assertRecipientsData(recipients_data, False, test_partners)