summaryrefslogtreecommitdiff
path: root/addons/test_mail/tests
diff options
context:
space:
mode:
authorDidier (did) <did@odoo.com>2020-12-11 09:34:01 +0000
committerSébastien Theys <seb@odoo.com>2020-12-11 09:34:01 +0000
commit337397eec5570fc9b3938d655a1ec0e4efcd73d9 (patch)
treec4a6dd349a19104985e6b9ce81ff9165aaf1d6f8 /addons/test_mail/tests
parentc54f445ceae72518f787f43213ec78a9a7e1b1eb (diff)
[FIX] mail: clean sub-queries when searching error message
Thread search with `message_has_error` should only return threads containing messages with failure of which the current user is author. Follow up on https://github.com/odoo/odoo/pull/52403 that changed how sub-queries were built. The current fix using `_search` is a non-ideal solution until task-2366651 brings a new domain operator for this use case. task-2409543 closes odoo/odoo#62813 Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
Diffstat (limited to 'addons/test_mail/tests')
-rw-r--r--addons/test_mail/tests/test_mail_thread_internals.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/addons/test_mail/tests/test_mail_thread_internals.py b/addons/test_mail/tests/test_mail_thread_internals.py
index ee44cb43756..afdf252210c 100644
--- a/addons/test_mail/tests/test_mail_thread_internals.py
+++ b/addons/test_mail/tests/test_mail_thread_internals.py
@@ -167,6 +167,29 @@ class TestDiscuss(TestMailCommon, TestRecipients):
messages = self.env['mail.message'].with_user(user2).message_fetch(domain=[['needaction', '=', True]])
self.assertEqual(len(messages), 2)
+ def test_notification_has_error_filter(self):
+ """Ensure message_has_error filter is only returning threads for which
+ the current user is author of a failed message."""
+ message = self.test_record.with_user(self.user_admin).message_post(
+ body='Test', message_type='comment', subtype_xmlid='mail.mt_comment',
+ partner_ids=[self.user_employee.partner_id.id]
+ )
+ self.assertFalse(message.has_error)
+ with self.mock_mail_gateway(sim_error='connect_smtp_notfound'):
+ self.user_admin.notification_type = 'email'
+ message2 = self.test_record.with_user(self.user_employee).message_post(
+ body='Test', message_type='comment', subtype_xmlid='mail.mt_comment',
+ partner_ids=[self.user_admin.partner_id.id]
+ )
+ self.assertTrue(message2.has_error)
+ # employee is author of message which has a failure
+ threads_employee = self.test_record.with_user(self.user_employee).search([('message_has_error', '=', True)])
+ self.assertEqual(len(threads_employee), 1)
+ # admin is also author of a message, but it doesn't have a failure
+ # and the failure from employee's message should not be taken into account for admin
+ threads_admin = self.test_record.with_user(self.user_admin).search([('message_has_error', '=', True)])
+ self.assertEqual(len(threads_admin), 0)
+
@tagged('-at_install', 'post_install')
class TestMultiCompany(HttpCase):