summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2021-04-26 12:38:41 +0000
committerThibault Delavallée <tde@odoo.com>2021-04-27 09:15:43 +0000
commit99f9f6372b3bd18b6dc10b2ff181920dfe90ec80 (patch)
tree44769cb36866f8444688a0698b8e10ef63d22f16
parent4cf75bb1767fe7524c8e4d895d84ad2b56ef404d (diff)
[IMP] test_mass_mailing: add test for archives / deletion
Purpose of this commit is to add tests for current behavior of ``keep archives`` field on mailing, used in combination of ``reply-to`` target (either new thread or update existing threads). Backport of odoo/odoo@b36b74fa570937795c598a9f08086b13ff7773c6 done in master (14.4). LINKS Task ID-2117639 COM PR odoo/odoo#40931
-rw-r--r--addons/mass_mailing/tests/test_mailing_internals.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/addons/mass_mailing/tests/test_mailing_internals.py b/addons/mass_mailing/tests/test_mailing_internals.py
index df26c19ce35..5fb3771a176 100644
--- a/addons/mass_mailing/tests/test_mailing_internals.py
+++ b/addons/mass_mailing/tests/test_mailing_internals.py
@@ -175,6 +175,79 @@ class TestMassMailFeatures(MassMailCommon):
@users('user_marketing')
@mute_logger('odoo.addons.mail.models.mail_mail')
+ def test_mailing_deletion(self):
+ """ Test deletion in various use case, depending on reply-to """
+ # 1- Keep archives and reply-to set to 'answer = new thread'
+ mailing = self.env['mailing.mailing'].create({
+ 'name': 'TestSource',
+ 'subject': 'TestDeletion',
+ 'body_html': "<div>Hello {object.name}</div>",
+ 'mailing_model_id': self.env['ir.model']._get('mailing.list').id,
+ 'contact_list_ids': [(6, 0, self.mailing_list_1.ids)],
+ 'keep_archives': True,
+ 'reply_to_mode': 'email',
+ 'reply_to': self.email_reply_to,
+ })
+ self.assertEqual(self.mailing_list_1.contact_ids.message_ids, self.env['mail.message'])
+
+ with self.mock_mail_gateway(mail_unlink_sent=True):
+ mailing.action_send_mail()
+
+ self.assertEqual(len(self._mails), 3)
+ self.assertEqual(len(self._new_mails.exists()), 3)
+ self.assertEqual(len(self.mailing_list_1.contact_ids.message_ids), 3)
+
+ # 2- Keep archives and reply-to set to 'answer = update thread'
+ self.mailing_list_1.contact_ids.message_ids.unlink()
+ mailing = mailing.copy()
+ mailing.write({
+ 'reply_to_mode': 'thread',
+ })
+ self.assertEqual(self.mailing_list_1.contact_ids.message_ids, self.env['mail.message'])
+
+ with self.mock_mail_gateway(mail_unlink_sent=True):
+ mailing.action_send_mail()
+
+ self.assertEqual(len(self._mails), 3)
+ self.assertEqual(len(self._new_mails.exists()), 3)
+ self.assertEqual(len(self.mailing_list_1.contact_ids.message_ids), 3)
+
+ # 3- Remove archives and reply-to set to 'answer = new thread'
+ self.mailing_list_1.contact_ids.message_ids.unlink()
+ mailing = mailing.copy()
+ mailing.write({
+ 'keep_archives': False,
+ 'reply_to_mode': 'email',
+ 'reply_to': self.email_reply_to,
+ })
+ self.assertEqual(self.mailing_list_1.contact_ids.message_ids, self.env['mail.message'])
+
+ with self.mock_mail_gateway(mail_unlink_sent=True):
+ mailing.action_send_mail()
+
+ self.assertEqual(len(self._mails), 3)
+ self.assertEqual(len(self._new_mails.exists()), 0)
+ self.assertEqual(self.mailing_list_1.contact_ids.message_ids, self.env['mail.message'])
+
+ # 4- Remove archives and reply-to set to 'answer = update thread'
+ # Imply keeping mail.message for gateway reply)
+ self.mailing_list_1.contact_ids.message_ids.unlink()
+ mailing = mailing.copy()
+ mailing.write({
+ 'keep_archives': False,
+ 'reply_to_mode': 'thread',
+ })
+ self.assertEqual(self.mailing_list_1.contact_ids.message_ids, self.env['mail.message'])
+
+ with self.mock_mail_gateway(mail_unlink_sent=True):
+ mailing.action_send_mail()
+
+ self.assertEqual(len(self._mails), 3)
+ self.assertEqual(len(self._new_mails.exists()), 0)
+ self.assertEqual(len(self.mailing_list_1.contact_ids.message_ids), 3)
+
+ @users('user_marketing')
+ @mute_logger('odoo.addons.mail.models.mail_mail')
def test_mailing_on_res_partner(self):
""" Test mailing on res.partner model: ensure default recipients are
correctly computed """