social/mass_mailing_resend/tests/test_mass_mailing_resend.py
2022-11-09 08:44:22 +01:00

64 lines
2.3 KiB
Python

# Copyright 2017-2020 Tecnativa - Pedro M. Baeza
# Copyright 2022 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import exceptions
from odoo.tests import common
class TestMassMailingResend(common.TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.list = cls.env["mailing.list"].create({"name": "Test list"})
cls.contact1 = cls.env["mailing.contact"].create(
{
"name": "Contact 1",
"email": "email1@test.com",
"list_ids": [[6, 0, [cls.list.id]]],
}
)
cls.contact2 = cls.env["mailing.contact"].create(
{
"name": "Contact 2",
"email": "email2@test.com",
"list_ids": [[6, 0, [cls.list.id]]],
}
)
cls.mass_mailing = cls.env["mailing.mailing"].create(
{
"name": "Test mass mailing",
"email_from": "test@example.org",
"mailing_model_id": cls.env.ref("mass_mailing.model_mailing_list").id,
"contact_list_ids": [(6, 0, cls.list.ids)],
"subject": "Mailing test",
}
)
cls.mm_cron = cls.env.ref("mass_mailing.ir_cron_mass_mailing_queue").sudo()
def test_resend_error(self):
with self.assertRaises(exceptions.UserError):
self.mass_mailing.button_draft()
def _mailing_action_done(self):
self.mass_mailing.action_launch()
self.mm_cron.method_direct_trigger()
def test_resend_process(self):
# Send mailing
self._mailing_action_done()
self.assertEqual(self.mass_mailing.state, "done")
self.assertEqual(self.mass_mailing.sent, 2)
# Simulate that an email has not been sent
self.mass_mailing.mailing_trace_ids.filtered(
lambda x: x.email == self.contact2.email
).unlink()
self.assertEqual(self.mass_mailing.sent, 1)
# Back to draft
self.mass_mailing.button_draft()
self.assertEqual(self.mass_mailing.state, "draft")
# Send mailing again (already sent not sent again)
self._mailing_action_done()
self.assertEqual(self.mass_mailing.state, "done")
self.assertEqual(self.mass_mailing.sent, 2)