diff options
| author | Thibault Delavallée <tde@odoo.com> | 2020-06-12 13:34:47 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2020-06-16 09:14:31 +0000 |
| commit | 7c37d457e7ff9261bf17deec25213bab8e56d1fc (patch) | |
| tree | 5705ec03e536a9774ba9c880a73ac71db796d374 | |
| parent | 71578c69f630f0e8b1f4f4bb1c25c7dca5327778 (diff) | |
[IMP] event: improve some type -> event configuration tests
Purpose of this commit is to add some tests related to event_type to event
configuration. Indeed changing a type on an event may change its sub models
(mails, tickets, questions). Asserting current behavior is necessary before
tweaking behavior considered as to be improved.
Task ID 2244487
PR odoo/odoo#52998
FwdPort of odoo/odoo#52923
X-original-commit: 6fb42e70164bab05681b11f1e76e320db0266445
| -rw-r--r-- | addons/event/tests/common.py | 2 | ||||
| -rw-r--r-- | addons/event/tests/test_event_internals.py | 152 |
2 files changed, 107 insertions, 47 deletions
diff --git a/addons/event/tests/common.py b/addons/event/tests/common.py index 126a839805f..f89f486439b 100644 --- a/addons/event/tests/common.py +++ b/addons/event/tests/common.py @@ -92,7 +92,7 @@ class TestEventCommon(common.SavepointCase): 'date_tz': 'Europe/Brussels', }) - # set country in order to format belgium numbers + # set country in order to format Belgian numbers cls.event_0.company_id.write({'country_id': cls.env.ref('base.be').id}) @classmethod diff --git a/addons/event/tests/test_event_internals.py b/addons/event/tests/test_event_internals.py index 9a8d4147d81..bd7e537f75f 100644 --- a/addons/event/tests/test_event_internals.py +++ b/addons/event/tests/test_event_internals.py @@ -70,62 +70,24 @@ class TestEventData(TestEventCommon): self.assertFalse(event.is_ongoing) @users('user_eventmanager') - def test_event_fields(self): - event_type = self.event_type_complex.with_user(self.env.user) - event = self.env['event.event'].create({ - 'name': 'Event Update Type', - 'event_type_id': event_type.id, - 'date_begin': FieldsDatetime.to_string(datetime.today() + timedelta(days=1)), - 'date_end': FieldsDatetime.to_string(datetime.today() + timedelta(days=15)), - }) - - self.assertEqual(event.address_id, self.env.user.company_id.partner_id) - # seats: coming from event type configuration - self.assertTrue(event.seats_limited) - self.assertEqual(event.seats_available, event.event_type_id.seats_max) - self.assertEqual(event.seats_unconfirmed, 0) - self.assertEqual(event.seats_reserved, 0) - self.assertEqual(event.seats_used, 0) - self.assertEqual(event.seats_expected, 0) - - # create registration in order to check the seats computation - self.assertTrue(event.auto_confirm) - for x in range(5): - reg = self.env['event.registration'].create({ - 'event_id': event.id, - 'name': 'reg_open', - }) - self.assertEqual(reg.state, 'open') - reg_draft = self.env['event.registration'].create({ - 'event_id': event.id, - 'name': 'reg_draft', - }) - reg_draft.write({'state': 'draft'}) - reg_done = self.env['event.registration'].create({ - 'event_id': event.id, - 'name': 'reg_done', - }) - reg_done.write({'state': 'done'}) - self.assertEqual(event.seats_available, event.event_type_id.seats_max - 6) - self.assertEqual(event.seats_unconfirmed, 1) - self.assertEqual(event.seats_reserved, 5) - self.assertEqual(event.seats_used, 1) - self.assertEqual(event.seats_expected, 7) - - @users('user_eventmanager') @mute_logger('odoo.models.unlink') def test_event_configuration_from_type(self): """ Test data computation of event coming from its event.type template. Some one2many notably are duplicated from type configuration and some advanced testing is required, notably mail schedulers. """ - self.assertEqual(self.env.user.tz, 'Europe/Brussels') - event_type = self.event_type_complex.with_user(self.env.user) + # ------------------------------------------------------------ + # STARTING DATA + # ------------------------------------------------------------ + + event_type = self.env['event.type'].browse(self.event_type_complex.id) event_type.write({ 'use_mail_schedule': False, + 'use_ticket': False, }) self.assertEqual(event_type.event_type_mail_ids, self.env['event.type.mail']) + self.assertEqual(event_type.event_type_ticket_ids, self.env['event.type.ticket']) event = self.env['event.event'].create({ 'name': 'Event Update Type', @@ -136,22 +98,77 @@ class TestEventData(TestEventCommon): self.assertFalse(event.seats_limited) self.assertFalse(event.auto_confirm) self.assertEqual(event.event_mail_ids, self.env['event.mail']) + self.assertEqual(event.event_ticket_ids, self.env['event.event.ticket']) + registration = self._create_registrations(event, 1) + self.assertEqual(registration.state, 'draft') # event is not auto confirm + + # ------------------------------------------------------------ + # FILL SYNC TEST + # ------------------------------------------------------------ + + # change template to a one with mails -> fill event as it is void event_type.write({ 'use_mail_schedule': True, 'event_type_mail_ids': [(5, 0), (0, 0, { 'interval_nbr': 1, 'interval_unit': 'days', 'interval_type': 'before_event', - 'template_id': self.env['ir.model.data'].xmlid_to_res_id('event.event_reminder')})] + 'template_id': self.env['ir.model.data'].xmlid_to_res_id('event.event_reminder')})], + 'use_ticket': True, + 'event_type_ticket_ids': [(5, 0), (0, 0, {'name': 'TestRegistration'})], }) event.write({'event_type_id': event_type.id}) self.assertEqual(event.date_tz, 'Europe/Paris') self.assertTrue(event.seats_limited) self.assertEqual(event.seats_max, event_type.seats_max) self.assertTrue(event.auto_confirm) + # check 2many fields being populated + self.assertEqual(len(event.event_mail_ids), 1) self.assertEqual(event.event_mail_ids.interval_nbr, 1) self.assertEqual(event.event_mail_ids.interval_unit, 'days') self.assertEqual(event.event_mail_ids.interval_type, 'before_event') self.assertEqual(event.event_mail_ids.template_id, self.env.ref('event.event_reminder')) + self.assertEqual(len(event.event_ticket_ids), 1) + event_ticket1 = event.event_ticket_ids[0] + self.assertEqual(event_ticket1.name, 'TestRegistration') + + # ------------------------------------------------------------ + # RESET TEST + # ------------------------------------------------------------ + + # link registration to ticket + registration.write({'event_ticket_id': event_ticket1.id}) + self.assertEqual(registration.event_ticket_id, event_ticket1) + + # change template to a void one for mails -> do not reset event + # change template to a one with other tickets -> reset event + event_type.write({ + 'use_mail_schedule': False, + 'event_type_mail_ids': [(5, 0)], + 'event_type_ticket_ids': [(5, 0), + (0, 0, {'name': 'Registration1'}), + (0, 0, {'name': 'Registration2'})], + }) + event._compute_from_event_type() + self.assertEqual(len(event.event_mail_ids), 1) + self.assertEqual(len(event.event_ticket_ids), 2) + self.assertEqual( + set(event.mapped('event_ticket_ids.name')), + set(['Registration1', 'Registration2']) + ) + # registration loose its ticket + self.assertEqual(registration.event_ticket_id, self.env['event.event.ticket']) + + # change template to a one with different mails -> reset event + event_type.write({ + 'use_mail_schedule': True, + 'event_type_mail_ids': [(5, 0), (0, 0, { + 'interval_nbr': 3, 'interval_unit': 'days', 'interval_type': 'after_event', + 'template_id': self.env['ir.model.data'].xmlid_to_res_id('event.event_reminder')})] + }) + event._compute_from_event_type() + self.assertEqual(len(event.event_mail_ids), 1) + self.assertEqual(event.event_mail_ids.interval_nbr, 3) + self.assertEqual(event.event_mail_ids.interval_type, 'after_event') @users('user_eventmanager') def test_event_registrable(self): @@ -235,6 +252,49 @@ class TestEventData(TestEventCommon): finished_or_upcoming_event_ids = self.env['event.event']._search([('is_ongoing', '=', False)]) self.assertNotIn(event_2.id, finished_or_upcoming_event_ids) + @users('user_eventmanager') + def test_event_seats(self): + event_type = self.event_type_complex.with_user(self.env.user) + event = self.env['event.event'].create({ + 'name': 'Event Update Type', + 'event_type_id': event_type.id, + 'date_begin': FieldsDatetime.to_string(datetime.today() + timedelta(days=1)), + 'date_end': FieldsDatetime.to_string(datetime.today() + timedelta(days=15)), + }) + + self.assertEqual(event.address_id, self.env.user.company_id.partner_id) + # seats: coming from event type configuration + self.assertTrue(event.seats_limited) + self.assertEqual(event.seats_available, event.event_type_id.seats_max) + self.assertEqual(event.seats_unconfirmed, 0) + self.assertEqual(event.seats_reserved, 0) + self.assertEqual(event.seats_used, 0) + self.assertEqual(event.seats_expected, 0) + + # create registration in order to check the seats computation + self.assertTrue(event.auto_confirm) + for x in range(5): + reg = self.env['event.registration'].create({ + 'event_id': event.id, + 'name': 'reg_open', + }) + self.assertEqual(reg.state, 'open') + reg_draft = self.env['event.registration'].create({ + 'event_id': event.id, + 'name': 'reg_draft', + }) + reg_draft.write({'state': 'draft'}) + reg_done = self.env['event.registration'].create({ + 'event_id': event.id, + 'name': 'reg_done', + }) + reg_done.write({'state': 'done'}) + self.assertEqual(event.seats_available, event.event_type_id.seats_max - 6) + self.assertEqual(event.seats_unconfirmed, 1) + self.assertEqual(event.seats_reserved, 5) + self.assertEqual(event.seats_used, 1) + self.assertEqual(event.seats_expected, 7) + class TestEventTicketData(TestEventCommon): |
