diff options
| author | Didier (did) <did@odoo.com> | 2020-12-11 09:34:01 +0000 |
|---|---|---|
| committer | Sébastien Theys <seb@odoo.com> | 2020-12-11 09:34:01 +0000 |
| commit | 337397eec5570fc9b3938d655a1ec0e4efcd73d9 (patch) | |
| tree | c4a6dd349a19104985e6b9ce81ff9165aaf1d6f8 /addons/test_mail | |
| parent | c54f445ceae72518f787f43213ec78a9a7e1b1eb (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')
| -rw-r--r-- | addons/test_mail/tests/test_mail_thread_internals.py | 23 |
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): |
