19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:30:27 +01:00
parent d1963a3c3a
commit 2d3ee4855a
7430 changed files with 2687981 additions and 2965473 deletions

View file

@ -0,0 +1,167 @@
from datetime import datetime
from odoo.addons.event.tests.common import EventCase
from odoo.addons.mail.tests.common import MockEmail
from odoo.tests import Form, tagged, users
from odoo.tools import formataddr
@tagged("event_mail", "mail_template", "mail_thread", "post_install", "-at_install")
class TestMailing(EventCase, MockEmail):
@classmethod
def setUpClass(cls):
super().setUpClass()
# freeze some datetimes, and ensure more than 1D+1H before event starts
# to ease time-based scheduler check
# Since `now` is used to set the `create_date` of an event and create_date
# has often microseconds, we set it to ensure that the scheduler we still be
# launched if scheduled_date == create_date - microseconds
cls.reference_now = datetime(2024, 7, 20, 14, 30, 15, 123456)
cls.event_date_begin = datetime(2024, 7, 22, 8, 0, 0)
cls.event_date_end = datetime(2024, 7, 24, 18, 0, 0)
with cls.mock_datetime_and_now(cls, cls.reference_now):
cls.test_event = cls.env['event.event'].create({
'date_begin': cls.event_date_begin,
'date_end': cls.event_date_end,
'date_tz': 'Europe/Brussels',
'event_mail_ids': False,
'name': 'TestEvent',
})
cls.registrations = cls.env["event.registration"].create([
{
"event_id": cls.test_event.id,
"partner_id": cls.event_customer.id,
},
{
"event_id": cls.test_event.id,
"partner_id": cls.event_customer2.id,
},
{
"email": "robodoo@example.com",
"event_id": cls.test_event.id,
"name": "Robodoo",
},
{
"email": "another.email@example.com",
"event_id": cls.test_event.id,
"name": "Another Email",
"partner_id": cls.event_customer2.id,
},
])
@users("user_eventuser")
def test_event_mail_attendees(self):
template_form = Form(
self.env["mail.template"].with_context(default_model="event.registration", default_name="Test Template")
)
template = template_form.save()
event = self.test_event.with_user(self.env.user)
event.write({
'event_mail_ids': [
(0, 0, {
'interval_type': 'before_event',
'interval_nbr': 0,
'template_ref': f'mail.template,{template.id}',
})
]
})
for event_values, exp_mail_values in [
(
{"organizer_id": self.event_organizer.id, "user_id": self.user_eventmanager.id},
{"email_from": self.event_organizer.email_formatted},
),
(
{"organizer_id": False},
{"email_from": self.user_eventmanager.company_id.email_formatted},
),
(
{"company_id": False},
{"email_from": self.user_eventuser.email_formatted},
),
]:
with self.subTest(event_values=event_values):
event.write(event_values)
with self.mock_mail_gateway(), self.mock_datetime_and_now(self.event_date_begin):
event.event_mail_ids._send_mail(self.registrations)
# where email == partner.email -> partner is recipient
for customer in self.event_customer + self.event_customer2:
self.assertMailMail(
customer,
"outgoing",
fields_values=exp_mail_values,
)
# other registrations: emails
self.assertMailMailWEmails(
[
formataddr(("Robodoo", "robodoo@example.com")),
formataddr(("Another Email", "another.email@example.com")),
],
"outgoing",
fields_values=exp_mail_values,
)
self.assertEqual(len(self._new_mails), 4)
@users("user_eventmanager")
def test_event_mail_recipients(self):
""" Check default / suggested recipients """
_default_organizer = self.user_eventmanager.company_id.partner_id
for event_values, exp_followers, exp_defaults, exp_suggested in [
(
{"organizer_id": self.event_organizer.id, "user_id": self.user_eventuser.id},
self.user_eventmanager.partner_id + self.user_eventuser.partner_id,
{"email_cc": "", "email_to": "", "partner_ids": []},
[],
),
(
{"organizer_id": False, "user_id": self.user_eventuser.id},
self.user_eventmanager.partner_id + self.user_eventuser.partner_id,
{"email_cc": "", "email_to": "", "partner_ids": []},
[],
),
(
{},
self.user_eventmanager.partner_id,
{"email_cc": "", "email_to": "", "partner_ids": []},
[],
),
]:
with self.subTest(event_values=event_values):
test_event = self.env['event.event'].create({
'date_begin': self.event_date_begin,
'date_end': self.event_date_end,
'date_tz': 'Europe/Brussels',
'event_mail_ids': False,
'name': 'TestEvent',
**event_values,
})
self.assertEqual(test_event.message_partner_ids, exp_followers)
defaults = test_event._message_get_default_recipients()[test_event.id]
self.assertDictEqual(defaults, exp_defaults)
suggested = test_event._message_get_suggested_recipients()
self.assertEqual(suggested, exp_suggested)
@users("user_eventuser")
def test_mail_template_creation(self):
""" Check default values when creating registration templates, should
be correctly configured by default. """
template_form_default = Form(
self.env["mail.template"].with_context(default_model="event.registration")
)
template_form_user = Form(self.env["mail.template"])
template_form_user.model_id = self.env["ir.model"]._get("event.registration")
for template in (template_form_default, template_form_user):
self.assertEqual(
template.email_from,
"{{ (object.event_id.organizer_id.email_formatted or object.event_id.company_id.email_formatted or user.email_formatted or '') }}"
)
self.assertFalse(template.email_to)
self.assertEqual(
template.lang,
"{{ object.event_id.lang or object.partner_id.lang }}",
)
self.assertTrue(template.use_default_to)