+ Dear
+ You have been assigned to the
+
+ View
+ done + by : + +
+ +Hello
The email sent to
Please contact us instead using
Regards,
+The
+ +
- Dear
- You have been assigned to the
-
- View
- done - by : - -
- -Hello
The email sent to
Please contact us instead using
Regards,
-The
- - diff --git a/addons/test_mail/tests/common.py b/addons/test_mail/tests/common.py index b526dce2906..c7b2e4af8e3 100644 --- a/addons/test_mail/tests/common.py +++ b/addons/test_mail/tests/common.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -from json import dumps, loads import json @@ -43,23 +42,23 @@ class BaseFunctionalTest(common.SavepointCase): def assertNotifications(self, **counters): """ Counters: 'partner_attribute': 'inbox' or 'email' """ try: - init_messages = self.test_record.message_ids init = {} partners = self.env['res.partner'] for partner_attribute in counters.keys(): - partner = getattr(self, partner_attribute) - partners |= partner + partners |= getattr(self, partner_attribute) + init_notifs = self.env['mail.notification'].sudo().search([('res_partner_id', 'in', partners.ids)]) + for partner in partners: if partner.user_ids: init[partner] = { - 'na_counter': self.test_record.sudo(partner.user_ids[0]).message_needaction_counter, + 'na_counter': len([n for n in init_notifs if n.res_partner_id == partner]), } yield finally: - new_messages = self.test_record.sudo().message_ids - init_messages - new_notifications = self.env['mail.notification'].search([ + new_notifications = self.env['mail.notification'].sudo().search([ ('res_partner_id', 'in', partners.ids), - ('mail_message_id', 'in', new_messages.ids) + ('id', 'not in', init_notifs.ids) ]) + new_messages = new_notifications.mapped('mail_message_id') for partner_attribute in counters.keys(): counter, notif_type, notif_read = counters[partner_attribute] @@ -70,9 +69,12 @@ class BaseFunctionalTest(common.SavepointCase): if partner.user_ids: expected = init[partner]['na_counter'] + counter if notif_read == 'unread' else init[partner]['na_counter'] - self.assertEqual(expected, self.test_record.sudo(partner.user_ids[0]).message_needaction_counter, - 'Invalid number of notification for %s: %s instead of %s' % - (partner.name, expected, self.test_record.sudo(partner.user_ids[0]).message_needaction_counter)) + real = self.env['mail.notification'].sudo().search_count([ + ('res_partner_id', '=', partner.id), + ('is_read', '=', False) + ]) + self.assertEqual(expected, real, 'Invalid number of notification for %s: %s instead of %s' % + (partner.name, real, expected)) if partner_notif: self.assertTrue(all(n.is_email == (notif_type == 'email') for n in partner_notif)) self.assertTrue(all(n.is_read == (notif_read == 'read') for n in partner_notif), diff --git a/addons/test_mail/tests/test_mail_activity.py b/addons/test_mail/tests/test_mail_activity.py index dcd3a4eeca7..fd584bbb759 100644 --- a/addons/test_mail/tests/test_mail_activity.py +++ b/addons/test_mail/tests/test_mail_activity.py @@ -144,6 +144,26 @@ class TestMailActivity(BaseFunctionalTest): self.assertEqual(self.test_record.activity_ids, self.env['mail.activity']) self.assertEqual(len(self.test_record.message_ids), 2) + def test_activity_notify_other_user(self): + self.user_admin.notification_type = 'email' + rec = self.test_record.sudo(self.user_employee) + with self.assertNotifications(partner_admin=(1, 'email', 'read')): + activity = rec.activity_schedule( + 'test_mail.mail_act_test_todo', + user_id=self.user_admin.id) + self.assertEqual(activity.create_user_id, self.user_employee) + self.assertEqual(activity.user_id, self.user_admin) + + def test_activity_notify_same_user(self): + self.user_employee.notification_type = 'email' + rec = self.test_record.sudo(self.user_employee) + with self.assertNotifications(partner_employee=(0, 'email', 'read')): + activity = rec.activity_schedule( + 'test_mail.mail_act_test_todo', + user_id=self.user_employee.id) + self.assertEqual(activity.create_user_id, self.user_employee) + self.assertEqual(activity.user_id, self.user_employee) + def test_activity_security_user_access(self): activity = self.test_record.activity_schedule( 'test_mail.mail_act_test_todo',