[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:
Thibault Delavallée
2019-07-25 11:45:08 +00:00
parent 947715b046
commit 2e2fd3f8a7
3 changed files with 44 additions and 37 deletions
+30 -23
View File
@@ -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
+9 -7
View File
@@ -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()
+5 -7
View File
@@ -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')