[FIX] event: only auto-trigger after_sub mails during registration + fix tests
Previously, all existing event.mail schedulers were auto-triggered at each registration, which could make the behavior unpredictable/surprising, including during the tests. Only trigger `after-sub` event.mail schedulers, as only those are related to a new registration. Tests fixed to take into account this new behavior.
This commit is contained in:
@@ -331,7 +331,11 @@ class event_registration(models.Model):
|
||||
body=_('New registration confirmed: %s.') % (self.name or ''),
|
||||
subtype="event.mt_event_registration")
|
||||
self.state = 'open'
|
||||
self.env['event.mail'].run()
|
||||
|
||||
# auto-trigger after_sub (on subscribe) mail schedulers, if needed
|
||||
onsubscribe_schedulers = self.event_id.event_mail_ids.filtered(
|
||||
lambda s: s.interval_type == 'after_sub')
|
||||
onsubscribe_schedulers.execute()
|
||||
|
||||
@api.one
|
||||
def button_reg_close(self):
|
||||
|
||||
@@ -48,27 +48,12 @@ class TestMailSchedule(TestEventCommon):
|
||||
'email': 'reg1@example.com',
|
||||
})
|
||||
|
||||
# check before event scheduler
|
||||
schedulers = self.EventMail.search([('event_id', '=', test_event.id), ('interval_type', '=', 'before_event')])
|
||||
self.assertEqual(len(schedulers), 1, 'event: wrong scheduler creation')
|
||||
self.assertEqual(schedulers[0].scheduled_date, datetime.datetime.strftime(event_date_begin + relativedelta(days=-2), tools.DEFAULT_SERVER_DATETIME_FORMAT), 'event: incorrect scheduled date')
|
||||
|
||||
# execute event reminder scheduler
|
||||
schedulers[0].execute()
|
||||
|
||||
self.assertTrue(schedulers[0].mail_sent, 'event: reminder scheduler should have sent an email')
|
||||
self.assertTrue(schedulers[0].done, 'event: reminder scheduler should be done')
|
||||
|
||||
mails = self.env['mail.mail'].search([('subject', 'ilike', 'reminder'), ('date', '>=', datetime.datetime.strftime(now, tools.DEFAULT_SERVER_DATETIME_FORMAT))], order='date DESC', limit=3)
|
||||
self.assertEqual(len(mails), 0, 'event: reminder to sent is not empty')
|
||||
|
||||
# check subscription scheduler
|
||||
schedulers = self.EventMail.search([('event_id', '=', test_event.id), ('interval_type', '=', 'after_sub')])
|
||||
self.assertEqual(len(schedulers), 1, 'event: wrong scheduler creation')
|
||||
self.assertEqual(schedulers[0].scheduled_date, test_event.create_date, 'event: incorrect scheduled date for checking controller')
|
||||
|
||||
# execute subscription scheduler
|
||||
schedulers[0].execute()
|
||||
# verify that subscription scheduler was auto-executed after each registration
|
||||
self.assertEqual(len(schedulers[0].mail_registration_ids), 2, 'event: incorrect number of mail scheduled date')
|
||||
|
||||
mails = self.env['mail.mail'].search([('subject', 'ilike', 'subscription'), ('date', '>=', datetime.datetime.strftime(now, tools.DEFAULT_SERVER_DATETIME_FORMAT))], order='date DESC', limit=3)
|
||||
@@ -76,3 +61,19 @@ class TestMailSchedule(TestEventCommon):
|
||||
|
||||
for registration in schedulers[0].mail_registration_ids:
|
||||
self.assertTrue(registration.mail_sent, 'event: wrongly confirmed mailing on subscription')
|
||||
|
||||
# check before event scheduler
|
||||
schedulers = self.EventMail.search([('event_id', '=', test_event.id), ('interval_type', '=', 'before_event')])
|
||||
self.assertEqual(len(schedulers), 1, 'event: wrong scheduler creation')
|
||||
self.assertEqual(schedulers[0].scheduled_date, datetime.datetime.strftime(event_date_begin + relativedelta(days=-2), tools.DEFAULT_SERVER_DATETIME_FORMAT), 'event: incorrect scheduled date')
|
||||
|
||||
# execute event reminder scheduler explicitly
|
||||
schedulers[0].execute()
|
||||
|
||||
self.assertTrue(schedulers[0].mail_sent, 'event: reminder scheduler should have sent an email')
|
||||
self.assertTrue(schedulers[0].done, 'event: reminder scheduler should be done')
|
||||
|
||||
mails = self.env['mail.mail'].search([('subject', 'ilike', 'reminder'), ('date', '>=', datetime.datetime.strftime(now, tools.DEFAULT_SERVER_DATETIME_FORMAT))], order='date DESC', limit=3)
|
||||
self.assertEqual(len(mails), 2, 'event: wrong number of reminders in outgoing mail queue')
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user