diff options
| author | Thibault Delavallée <tde@odoo.com> | 2021-04-08 14:41:56 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2021-04-08 15:06:28 +0000 |
| commit | cb648d20dfe949c71c1f50ebda822d32ec8c976f (patch) | |
| tree | b28d6a89bf78be052f867cff80708d53c80109c1 /addons/mass_mailing/tests | |
| parent | 070bec2f3a7a50c6fc8f104cf92a9416ebc001b8 (diff) | |
[IMP] mail, (test_)mass_mailing: also check sent emails if possible
When using assertMailMailWEmails custom assert we now check that a sent
mail.mail matches a sent email. It allows to have a complete check from
mailing traces to sent emails.
Task ID-2500615
COM PR odoo/odoo#68874
ENT PR odoo/enterprise#17558
Diffstat (limited to 'addons/mass_mailing/tests')
| -rw-r--r-- | addons/mass_mailing/tests/common.py | 29 | ||||
| -rw-r--r-- | addons/mass_mailing/tests/test_mailing_internals.py | 4 |
2 files changed, 19 insertions, 14 deletions
diff --git a/addons/mass_mailing/tests/common.py b/addons/mass_mailing/tests/common.py index 5f6d8fa8f73..b4a2fa1d5e3 100644 --- a/addons/mass_mailing/tests/common.py +++ b/addons/mass_mailing/tests/common.py @@ -7,7 +7,8 @@ from odoo.addons.mail.tests.common import MailCase, MailCommon, mail_new_test_us class MassMailCase(MailCase, MockLinkTracker): - def assertMailTraces(self, recipients_info, mailing, records, check_mail=True): + def assertMailTraces(self, recipients_info, mailing, records, + check_mail=True, author=None): """ Check content of traces. :param recipients_info: list[{ @@ -19,6 +20,15 @@ class MassMailCase(MailCase, MockLinkTracker): 'failure_type': optional: UPDATE ME }, { ... }] """ + # map trace state to email state + state_mapping = { + 'sent': 'sent', + 'replied': 'sent', # replied imply something has been sent + 'ignored': 'cancel', + 'exception': 'exception', + 'canceled': 'canceled', + } + traces = self.env['mailing.trace'].search([ ('mass_mailing_id', 'in', mailing.ids), ('res_id', 'in', records.ids) @@ -47,22 +57,17 @@ class MassMailCase(MailCase, MockLinkTracker): ) if check_mail: + if author is None: + author = self.env.user.partner_id + fields_values = {'mailing_id': mailing} if 'failure_type' in recipient_info: fields_values['failure_type'] = recipient_info['failure_type'] - if state == 'sent': - self.assertMailMailWEmails([email], 'sent', content=content, fields_values=fields_values) - elif state == 'replied': # replied imply something has been sent - self.assertMailMailWEmails([email], 'sent', content=content, fields_values=fields_values) - elif state == 'ignored': - self.assertMailMailWEmails([email], 'cancel', content=content, fields_values=fields_values) - elif state == 'exception': - self.assertMailMailWEmails([email], 'exception', content=content, fields_values=fields_values) - elif state == 'canceled': - self.assertMailMailWEmails([email], 'canceled', content=content, fields_values=fields_values) + if partner: + self.assertMailMail(partner, state_mapping[state], author=author, content=content, fields_values=fields_values) else: - raise NotImplementedError() + self.assertMailMailWEmails([email], state_mapping[state], author=author, content=content, fields_values=fields_values) class MassMailCommon(MailCommon, MassMailCase): diff --git a/addons/mass_mailing/tests/test_mailing_internals.py b/addons/mass_mailing/tests/test_mailing_internals.py index 115736e987d..fbb61f3f0fd 100644 --- a/addons/mass_mailing/tests/test_mailing_internals.py +++ b/addons/mass_mailing/tests/test_mailing_internals.py @@ -200,8 +200,8 @@ class TestMassMailFeatures(MassMailCommon): mailing._process_mass_mailing_queue() self.assertMailTraces( - [{'email': 'test1@example.com'}, - {'email': 'test2@example.com', 'state': 'ignored'}], + [{'partner': partner_a}, + {'partner': partner_b, 'state': 'ignored'}], mailing, partner_a | partner_b, check_mail=True ) |
