diff --git a/addons/mass_mailing/tests/test_mailing_internals.py b/addons/mass_mailing/tests/test_mailing_internals.py
index bc5408c288b..967420bc8a5 100644
--- a/addons/mass_mailing/tests/test_mailing_internals.py
+++ b/addons/mass_mailing/tests/test_mailing_internals.py
@@ -213,6 +213,79 @@ class TestMassMailFeatures(MassMailCommon, CronMixinCase):
capt.records.ensure_one()
self.assertLessEqual(capt.records.call_at, truth)
+ @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': "
Hello {object.name}
",
+ '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):