[IMP] event: improve test class and data to help reusing them
PURPOSE
Allow the user to schedule SMS communication on events
SPECIFICATIONS
In order to add tests this commit performs a quick cleaning of event common
class to speedup and prepare new tests.
Containing
* move data creation in class and use savepoint;
* move registration creation in its own method to allow calling it if
necessary;
* clean some unnecessary variables.
LINKS
Task 1922187
Part of PR #34705
This commit is contained in:
@@ -6,47 +6,54 @@ from odoo import fields
|
||||
from odoo.tests import common
|
||||
|
||||
|
||||
class TestEventCommon(common.TransactionCase):
|
||||
class TestEventCommon(common.SavepointCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestEventCommon, self).setUp()
|
||||
|
||||
# Usefull models
|
||||
self.Users = self.env['res.users']
|
||||
self.Event = self.env['event.event']
|
||||
self.Registration = self.env['event.registration']
|
||||
self.EventMail = self.env['event.mail']
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(TestEventCommon, cls).setUpClass()
|
||||
|
||||
# User groups
|
||||
self.group_employee_id = self.env['ir.model.data'].xmlid_to_res_id('base.group_user')
|
||||
self.group_event_user_id = self.env['ir.model.data'].xmlid_to_res_id('event.group_event_user')
|
||||
self.group_event_manager_id = self.env['ir.model.data'].xmlid_to_res_id('event.group_event_manager')
|
||||
group_system = self.env.ref('base.group_system')
|
||||
cls.group_employee_id = cls.env.ref('base.group_user').id
|
||||
cls.group_event_user_id = cls.env.ref('event.group_event_user').id
|
||||
cls.group_event_manager_id = cls.env.ref('event.group_event_manager').id
|
||||
cls.group_system_id = cls.env.ref('base.group_system').id
|
||||
|
||||
# Test users to use through the various tests
|
||||
self.user_eventuser = self.Users.with_context({'no_reset_password': True}).create({
|
||||
cls.user_eventuser = cls.env['res.users'].with_context({'no_reset_password': True}).create({
|
||||
'name': 'Armande EventUser',
|
||||
'login': 'Armande',
|
||||
'email': 'armande.eventuser@example.com',
|
||||
'tz': 'Europe/Brussels',
|
||||
'groups_id': [(6, 0, [self.group_employee_id, self.group_event_user_id])]
|
||||
'groups_id': [(6, 0, [cls.group_employee_id, cls.group_event_user_id])]
|
||||
})
|
||||
self.user_eventmanager = self.Users.with_context({'no_reset_password': True}).create({
|
||||
cls.user_eventmanager = cls.env['res.users'].with_context({'no_reset_password': True}).create({
|
||||
'name': 'Bastien EventManager',
|
||||
'login': 'bastien',
|
||||
'email': 'bastien.eventmanager@example.com',
|
||||
'tz': 'Europe/Brussels',
|
||||
'groups_id': [(6, 0, [
|
||||
self.group_employee_id,
|
||||
self.group_event_manager_id,
|
||||
group_system.id])]
|
||||
cls.group_employee_id,
|
||||
cls.group_event_manager_id,
|
||||
cls.group_system_id])]
|
||||
})
|
||||
|
||||
self.event_0 = self.env['event.event'].create({
|
||||
cls.event_0 = cls.env['event.event'].create({
|
||||
'name': 'TestEvent',
|
||||
'auto_confirm': True,
|
||||
'date_begin': fields.Datetime.to_string(datetime.today() + timedelta(days=1)),
|
||||
'date_end': fields.Datetime.to_string(datetime.today() + timedelta(days=15)),
|
||||
'registration_ids': [(0, 0, {
|
||||
'partner_id': self.user_eventuser.partner_id.id,
|
||||
})]
|
||||
})
|
||||
|
||||
# set country in order to format belgium numbers
|
||||
cls.event_0.company_id.write({'country_id': cls.env.ref('base.be').id})
|
||||
|
||||
@classmethod
|
||||
def _create_registrations(cls, event, reg_count):
|
||||
# create some registrations
|
||||
registrations = cls.env['event.registration'].create([{
|
||||
'event_id': event.id,
|
||||
'name': 'Test Registration %s' % x,
|
||||
'email': '_test_reg_%s@example.com' % x,
|
||||
'phone': '04560000%s%s' % (x, x),
|
||||
} for x in range(0, reg_count)])
|
||||
return registrations
|
||||
|
||||
@@ -19,7 +19,7 @@ class TestEventFlow(TestEventCommon):
|
||||
def test_00_basic_event_auto_confirm(self):
|
||||
""" Basic event management with auto confirmation """
|
||||
# EventUser creates a new event: ok
|
||||
test_event = self.Event.with_user(self.user_eventmanager).create({
|
||||
test_event = self.env['event.event'].with_user(self.user_eventmanager).create({
|
||||
'name': 'TestEvent',
|
||||
'auto_confirm': True,
|
||||
'date_begin': datetime.datetime.now() + relativedelta(days=-1),
|
||||
@@ -30,13 +30,13 @@ class TestEventFlow(TestEventCommon):
|
||||
self.assertEqual(test_event.state, 'confirm', 'Event: auto_confirmation of event failed')
|
||||
|
||||
# EventUser create registrations for this event
|
||||
test_reg1 = self.Registration.with_user(self.user_eventuser).create({
|
||||
test_reg1 = self.env['event.registration'].with_user(self.user_eventuser).create({
|
||||
'name': 'TestReg1',
|
||||
'event_id': test_event.id,
|
||||
})
|
||||
self.assertEqual(test_reg1.state, 'open', 'Event: auto_confirmation of registration failed')
|
||||
self.assertEqual(test_event.seats_reserved, 1, 'Event: wrong number of reserved seats after confirmed registration')
|
||||
test_reg2 = self.Registration.with_user(self.user_eventuser).create({
|
||||
test_reg2 = self.env['event.registration'].with_user(self.user_eventuser).create({
|
||||
'name': 'TestReg2',
|
||||
'event_id': test_event.id,
|
||||
})
|
||||
@@ -45,7 +45,7 @@ class TestEventFlow(TestEventCommon):
|
||||
|
||||
# EventUser create registrations for this event: too much registrations
|
||||
with self.assertRaises(ValidationError):
|
||||
self.Registration.with_user(self.user_eventuser).create({
|
||||
self.env['event.registration'].with_user(self.user_eventuser).create({
|
||||
'name': 'TestReg3',
|
||||
'event_id': test_event.id,
|
||||
})
|
||||
@@ -70,7 +70,7 @@ class TestEventFlow(TestEventCommon):
|
||||
""" Avanced event flow: no auto confirmation, manage minimum / maximum
|
||||
seats, ... """
|
||||
# EventUser creates a new event: ok
|
||||
test_event = self.Event.with_user(self.user_eventmanager).create({
|
||||
test_event = self.env['event.event'].with_user(self.user_eventmanager).create({
|
||||
'name': 'TestEvent',
|
||||
'date_begin': datetime.datetime.now() + relativedelta(days=-1),
|
||||
'date_end': datetime.datetime.now() + relativedelta(days=1),
|
||||
@@ -81,7 +81,7 @@ class TestEventFlow(TestEventCommon):
|
||||
'Event: new event should be in draft state, no auto confirmation')
|
||||
|
||||
# EventUser create registrations for this event -> no auto confirmation
|
||||
test_reg1 = self.Registration.with_user(self.user_eventuser).create({
|
||||
test_reg1 = self.env['event.registration'].with_user(self.user_eventuser).create({
|
||||
'name': 'TestReg1',
|
||||
'event_id': test_event.id,
|
||||
})
|
||||
@@ -92,7 +92,7 @@ class TestEventFlow(TestEventCommon):
|
||||
def test_event_access_rights(self):
|
||||
# EventManager required to create or update events
|
||||
with self.assertRaises(AccessError):
|
||||
self.Event.with_user(self.user_eventuser).create({
|
||||
self.env['event.event'].with_user(self.user_eventuser).create({
|
||||
'name': 'TestEvent',
|
||||
'date_begin': datetime.datetime.now() + relativedelta(days=-1),
|
||||
'date_end': datetime.datetime.now() + relativedelta(days=1),
|
||||
@@ -114,9 +114,11 @@ class TestEventFlow(TestEventCommon):
|
||||
event_config.execute()
|
||||
|
||||
def test_event_data(self):
|
||||
self.event_0.write({'registration_ids': [(0, 0, {'partner_id': self.user_eventuser.partner_id.id})]})
|
||||
self.assertEqual(self.event_0.registration_ids.get_date_range_str(), u'tomorrow')
|
||||
|
||||
def test_event_date_range(self):
|
||||
self.event_0.write({'registration_ids': [(0, 0, {'partner_id': self.user_eventuser.partner_id.id})]})
|
||||
self.patcher = patch('odoo.addons.event.models.event.fields.Datetime', wraps=Datetime)
|
||||
self.mock_datetime = self.patcher.start()
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ class TestMailSchedule(TestEventCommon):
|
||||
event_date_begin = now + relativedelta(days=1)
|
||||
event_date_end = now + relativedelta(days=3)
|
||||
|
||||
test_event = self.Event.with_user(self.user_eventmanager).create({
|
||||
test_event = self.env['event.event'].with_user(self.user_eventmanager).create({
|
||||
'name': 'TestEventMail',
|
||||
'auto_confirm': True,
|
||||
'date_begin': event_date_begin,
|
||||
@@ -37,19 +37,19 @@ class TestMailSchedule(TestEventCommon):
|
||||
})
|
||||
|
||||
# create some registrations
|
||||
self.Registration.with_user(self.user_eventuser).create({
|
||||
self.env['event.registration'].with_user(self.user_eventuser).create({
|
||||
'event_id': test_event.id,
|
||||
'name': 'Reg0',
|
||||
'email': 'reg0@example.com',
|
||||
})
|
||||
self.Registration.with_user(self.user_eventuser).create({
|
||||
self.env['event.registration'].with_user(self.user_eventuser).create({
|
||||
'event_id': test_event.id,
|
||||
'name': 'Reg1',
|
||||
'email': 'reg1@example.com',
|
||||
})
|
||||
|
||||
# check subscription scheduler
|
||||
schedulers = self.EventMail.search([('event_id', '=', test_event.id), ('interval_type', '=', 'after_sub')])
|
||||
schedulers = self.env['event.mail'].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')
|
||||
|
||||
@@ -63,7 +63,7 @@ class TestMailSchedule(TestEventCommon):
|
||||
self.assertTrue(registration.mail_sent, 'event: wrongly confirmed mailing on registration')
|
||||
|
||||
# check before event scheduler
|
||||
schedulers = self.EventMail.search([('event_id', '=', test_event.id), ('interval_type', '=', 'before_event')])
|
||||
schedulers = self.env['event.mail'].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, event_date_begin + relativedelta(days=-1), 'event: incorrect scheduled date')
|
||||
|
||||
@@ -75,5 +75,3 @@ class TestMailSchedule(TestEventCommon):
|
||||
|
||||
mails = self.env['mail.mail'].search([('subject', 'ilike', 'TestEventMail'), ('date', '>=', now)], order='date DESC', limit=3)
|
||||
self.assertEqual(len(mails), 3, 'event: wrong number of reminders in outgoing mail queue')
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user