diff options
| author | Thibault Delavallée <tde@odoo.com> | 2020-02-19 14:40:37 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2020-03-10 11:15:09 +0000 |
| commit | 5e4efef3ca3f2e9f02ec40c746c0d43aa3e97b79 (patch) | |
| tree | 0694549107cb5db9f0af721f642fb0542a8ee5ee /addons/event/tests | |
| parent | 22351763477969b415c7403fca260a43a68baac9 (diff) | |
[REF] event : move from onchange / default to stored editable computed fields
PURPOSE
Try to move from onchange / default_get to stored editable computed fields.
Behavior should be the same (computed or set by user), with support of
create / write / onchange field update without additional code.
SPECIFICATIONS: GLOBAL RULES
Update classic fields updated in some cases by onchange and/or default methods
by fields with store=True, readonly=False. It means their value comes either
from manual user input, either from trigger based computation.
Remove onchange and default_get when possible, leading to an unique computation
method and clearing fields definition.
Also clean some fields definition inconsistencies, notably required fields
that should instead be correctly computed or default that have no real meaning.
SPECIFICATIONS: REQUIRED FIELDS
As computed fields are computed after create required attribute cannot be
respected without computing them beforehand. That is why we have some custom
code to compute required fields if not given at create and update the creation
values accordingly.
SPECIFICATIONS: MAIL SCHEDULING
Mail scheduling on event type is modified in this commit. Previously checking
the use_mail_schedule radio button had no effect on event_type_mail_ids field.
It is now reset if unchecked. It is therefore coherent with use_ticket and
event_type_ticket_ids field behavior.
LINKS
Task ID 2089156
Community PR odoo/odoo#42911
Co-Authored-By: Thibault Delavallée <tde@odoo.com>
Co-Authored-By: Michaël Mattiello <mcm@odoo.com>
Diffstat (limited to 'addons/event/tests')
| -rw-r--r-- | addons/event/tests/common.py | 2 | ||||
| -rw-r--r-- | addons/event/tests/test_event_flow.py | 5 | ||||
| -rw-r--r-- | addons/event/tests/test_event_internals.py | 27 | ||||
| -rw-r--r-- | addons/event/tests/test_event_mail_schedule.py | 1 | ||||
| -rw-r--r-- | addons/event/tests/test_event_security.py | 6 |
5 files changed, 16 insertions, 25 deletions
diff --git a/addons/event/tests/common.py b/addons/event/tests/common.py index f58722efcd1..8c32e558185 100644 --- a/addons/event/tests/common.py +++ b/addons/event/tests/common.py @@ -58,7 +58,7 @@ class TestEventCommon(common.SavepointCase): 'default_timezone': 'Europe/Paris', 'use_ticket': True, 'event_type_ticket_ids': [(0, 0, { - 'name': 'First Ticket', + 'name': 'First Ticket', }), (0, 0, { 'name': 'Second Ticket', }) diff --git a/addons/event/tests/test_event_flow.py b/addons/event/tests/test_event_flow.py index 572e64a8231..1ec9208e1b3 100644 --- a/addons/event/tests/test_event_flow.py +++ b/addons/event/tests/test_event_flow.py @@ -24,6 +24,7 @@ class TestEventFlow(TestEventCommon): 'seats_max': 2, 'seats_availability': 'limited', }) + self.assertTrue(test_event.auto_confirm) # EventUser create registrations for this event test_reg1 = self.env['event.registration'].with_user(self.user_eventuser).create({ @@ -56,15 +57,17 @@ class TestEventFlow(TestEventCommon): @mute_logger('odoo.addons.base.models.ir_model', 'odoo.models') def test_event_flow(self): - """ Avanced event flow: no auto confirmation, manage minimum / maximum + """ Advanced event flow: no auto confirmation, manage minimum / maximum seats, ... """ # EventUser creates a new event: ok 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), + 'seats_availability': 'limited', 'seats_max': 10, }) + self.assertFalse(test_event.auto_confirm) # EventUser create registrations for this event -> no auto confirmation test_reg1 = self.env['event.registration'].with_user(self.user_eventuser).create({ diff --git a/addons/event/tests/test_event_internals.py b/addons/event/tests/test_event_internals.py index 95e935972b3..b0ab686fa76 100644 --- a/addons/event/tests/test_event_internals.py +++ b/addons/event/tests/test_event_internals.py @@ -58,7 +58,7 @@ class TestEventData(TestEventCommon): 'date_begin': FieldsDatetime.to_string(datetime.today() + timedelta(days=1)), 'date_end': FieldsDatetime.to_string(datetime.today() + timedelta(days=15)), }) - event._onchange_type() + self.assertFalse(event.is_online) self.assertEqual(event.address_id, self.env.user.company_id.partner_id) # seats: coming from event type configuration @@ -71,7 +71,6 @@ class TestEventData(TestEventCommon): # set is_online: should reset the address_id field event.update({'is_online': True}) - event._onchange_is_online() self.assertTrue(event.is_online) self.assertFalse(event.address_id) @@ -112,14 +111,12 @@ class TestEventData(TestEventCommon): event_type.write({ 'use_mail_schedule': False, }) - # Event type does not use mail schedule but data is kept for compatibility and avoid recreating them - self.assertEqual(len(event_type.event_type_mail_ids), 2) + self.assertEqual(event_type.event_type_mail_ids, self.env['event.type.mail']) event = self.env['event.event'].create({ 'name': 'Event Update Type', 'date_begin': FieldsDatetime.to_string(datetime.today() + timedelta(days=1)), 'date_end': FieldsDatetime.to_string(datetime.today() + timedelta(days=15)), - 'auto_confirm': False, 'is_online': True, }) self.assertEqual(event.date_tz, self.env.user.tz) @@ -128,22 +125,18 @@ class TestEventData(TestEventCommon): self.assertTrue(event.is_online) self.assertEqual(event.event_mail_ids, self.env['event.mail']) - event.update({'event_type_id': event_type.id}) - event._onchange_type() - self.assertEqual(event.date_tz, 'Europe/Paris') - self.assertEqual(event.seats_availability, 'limited') - self.assertEqual(event.seats_max, event_type.default_registration_max) - self.assertTrue(event.auto_confirm) - self.assertFalse(event.is_online) - self.assertEqual(event.event_mail_ids, self.env['event.mail']) - 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')})] }) - event._onchange_type() + event.write({'event_type_id': event_type.id}) + self.assertEqual(event.date_tz, 'Europe/Paris') + self.assertEqual(event.seats_availability, 'limited') + self.assertEqual(event.seats_max, event_type.default_registration_max) + self.assertTrue(event.auto_confirm) + self.assertFalse(event.is_online) 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') @@ -194,7 +187,7 @@ class TestEventData(TestEventCommon): self.assertFalse(event.event_registrations_open) @users('user_eventmanager') - def test_ongoing_events(self): + def test_event_ongoing(self): self.patcher = patch('odoo.addons.event.models.event_event.fields.Datetime', wraps=FieldsDatetime) self.mock_datetime = self.patcher.start() self.mock_datetime.now.return_value = datetime(2020, 1, 10, 8, 0, 0) @@ -297,14 +290,12 @@ class TestEventTypeData(TestEventCommon): 'default_registration_max': 30, 'use_ticket': True, }) - event_type._onchange_has_seats_limitation() self.assertTrue(event_type.has_seats_limitation) self.assertEqual(event_type.default_registration_max, 30) self.assertEqual(event_type.event_type_ticket_ids.mapped('name'), ['Registration']) # reset seats limitation event_type.write({'has_seats_limitation': False}) - event_type._onchange_has_seats_limitation() self.assertFalse(event_type.has_seats_limitation) self.assertEqual(event_type.default_registration_max, 0) diff --git a/addons/event/tests/test_event_mail_schedule.py b/addons/event/tests/test_event_mail_schedule.py index ba1223ccc0f..42e1d18017d 100644 --- a/addons/event/tests/test_event_mail_schedule.py +++ b/addons/event/tests/test_event_mail_schedule.py @@ -22,7 +22,6 @@ class TestMailSchedule(TestEventCommon): 'auto_confirm': True, 'date_begin': event_date_begin, 'date_end': event_date_end, - 'seats_max': 10, 'event_mail_ids': [ (0, 0, { # right at subscription 'interval_unit': 'now', diff --git a/addons/event/tests/test_event_security.py b/addons/event/tests/test_event_security.py index d2ac6d275a3..50cf81a84ec 100644 --- a/addons/event/tests/test_event_security.py +++ b/addons/event/tests/test_event_security.py @@ -26,6 +26,7 @@ class TestEventSecurity(TestEventCommon): 'name': 'TestEvent', 'date_begin': datetime.now() + relativedelta(days=-1), 'date_end': datetime.now() + relativedelta(days=1), + 'seats_availability': 'limited', 'seats_max': 10, }) @@ -50,7 +51,6 @@ class TestEventSecurity(TestEventCommon): 'name': 'TestEvent', 'date_begin': datetime.now() + relativedelta(days=-1), 'date_end': datetime.now() + relativedelta(days=1), - 'seats_max': 10, }) with self.assertRaises(AccessError): @@ -76,12 +76,10 @@ class TestEventSecurity(TestEventCommon): }) event = self.env['event.event'].create({ 'name': 'ManagerEvent', + 'event_type_id': event_type.id, 'date_begin': datetime.now() + relativedelta(days=-1), 'date_end': datetime.now() + relativedelta(days=1), }) - event.update({'event_type_id': event_type.id}) - event._onchange_type() - event.flush() registration = self.env['event.registration'].create({'event_id': event.id, 'name': 'Myself'}) registration.write({'name': 'Myself2'}) |
