summaryrefslogtreecommitdiff
path: root/addons/event/tests
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2021-02-08 10:24:44 +0000
committerThibault Delavallée <tde@odoo.com>2021-02-10 16:56:07 +0000
commit6eac6ede401fd949405b7e1c8c82acfa5a3f6a9d (patch)
treeeb88c61cff72f24ca250bd8d1f05fc1bb37a2313 /addons/event/tests
parent3b58b373e1c6c155f65b88c31cbb47794cb0a554 (diff)
[IMP] event, website_event_track: add tests about stored editable computed fields
Add tests related to registration / partner contact fields synchronization. Add tests with user input and/or partner synchronization to ensure editable stored fields work as expected on registration model. Add tests related to event track / partner contact fields synchronization. Add tests with user input and/or partner synchronization to ensure editable stored fields work as expected on track model. Add tests related to event / event type configuration fields synchronization. Add tests with user input and/or event type synchronization to ensure editable stored fields work as expected on event model. Warning: those tests are currently partly failing. Next commits will split computed fields into several methods in order to fix computation. LINKS COM PR #65688 Task ID-2455165
Diffstat (limited to 'addons/event/tests')
-rw-r--r--addons/event/tests/test_event_internals.py108
1 files changed, 108 insertions, 0 deletions
diff --git a/addons/event/tests/test_event_internals.py b/addons/event/tests/test_event_internals.py
index 98f562f454e..e27db0709e6 100644
--- a/addons/event/tests/test_event_internals.py
+++ b/addons/event/tests/test_event_internals.py
@@ -128,6 +128,20 @@ class TestEventData(TestEventCommon):
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)
+
+ # update template, unlink from event -> should not impact event
+ event_type.write({'has_seats_limitation': False})
+ self.assertEqual(event_type.seats_max, 0)
+ self.assertTrue(event.seats_limited)
+ self.assertEqual(event.seats_max, 30) # original template value
+ event.write({'event_type_id': False})
+ self.assertEqual(event.event_type_id, self.env["event.type"])
+
+ # set template back -> update event
+ event.write({'event_type_id': event_type.id})
+ self.assertFalse(event.seats_limited)
+ self.assertEqual(event.seats_max, 0)
+ self.assertEqual(len(event.event_ticket_ids), 1)
event_ticket1 = event.event_ticket_ids[0]
self.assertEqual(event_ticket1.name, 'TestRegistration')
@@ -298,6 +312,100 @@ class TestEventData(TestEventCommon):
self.assertEqual(event.seats_expected, 7)
+class TestEventRegistrationData(TestEventCommon):
+
+ @users('user_eventmanager')
+ def test_registration_partner_sync(self):
+ """ Test registration computed fields about partner """
+ test_email = '"Nibbler In Space" <nibbler@futurama.example.com>'
+ test_phone = '0456001122'
+
+ event = self.env['event.event'].browse(self.event_0.ids)
+ customer = self.env['res.partner'].browse(self.event_customer.id)
+
+ # take all from partner
+ event.write({
+ 'registration_ids': [(0, 0, {
+ 'partner_id': customer.id,
+ })]
+ })
+ new_reg = event.registration_ids[0]
+ self.assertEqual(new_reg.partner_id, customer)
+ self.assertEqual(new_reg.name, customer.name)
+ self.assertEqual(new_reg.email, customer.email)
+ self.assertEqual(new_reg.phone, customer.phone)
+
+ # partial update
+ event.write({
+ 'registration_ids': [(0, 0, {
+ 'partner_id': customer.id,
+ 'name': 'Nibbler In Space',
+ 'email': test_email,
+ })]
+ })
+ new_reg = event.registration_ids.sorted()[0]
+ self.assertEqual(new_reg.partner_id, customer)
+ self.assertEqual(
+ new_reg.name, 'Nibbler In Space',
+ 'Registration should take user input over computed partner value')
+ self.assertEqual(
+ new_reg.email, test_email,
+ 'Registration should take user input over computed partner value')
+ # self.assertEqual(
+ # new_reg.phone, customer.phone,
+ # 'Registration should take partner value if not user input')
+
+ # already filled information should not be updated
+ event.write({
+ 'registration_ids': [(0, 0, {
+ 'name': 'Nibbler In Space',
+ 'phone': test_phone,
+ })]
+ })
+ new_reg = event.registration_ids.sorted()[0]
+ self.assertEqual(new_reg.name, 'Nibbler In Space')
+ self.assertEqual(new_reg.email, False)
+ self.assertEqual(new_reg.phone, test_phone)
+ new_reg.write({'partner_id': customer.id})
+ self.assertEqual(new_reg.partner_id, customer)
+ self.assertEqual(new_reg.name, 'Nibbler In Space')
+ self.assertEqual(new_reg.email, customer.email)
+ self.assertEqual(new_reg.phone, test_phone)
+
+ @users('user_eventmanager')
+ def test_registration_partner_sync_company(self):
+ """ Test synchronization involving companies """
+ event = self.env['event.event'].browse(self.event_0.ids)
+ customer = self.env['res.partner'].browse(self.event_customer.id)
+
+ # create company structure (using sudo as required partner manager group)
+ company = self.env['res.partner'].sudo().create({
+ 'name': 'Customer Company',
+ 'is_company': True,
+ 'type': 'other',
+ })
+ customer.sudo().write({'type': 'invoice', 'parent_id': company.id})
+ contact = self.env['res.partner'].sudo().create({
+ 'name': 'ContactName',
+ 'parent_id': company.id,
+ 'type': 'contact',
+ 'email': 'ContactEmail <contact.email@test.example.com>',
+ 'phone': '+32456998877',
+ })
+
+ # take all from partner
+ event.write({
+ 'registration_ids': [(0, 0, {
+ 'partner_id': customer.id,
+ })]
+ })
+ new_reg = event.registration_ids[0]
+ self.assertEqual(new_reg.partner_id, customer)
+ self.assertEqual(new_reg.name, contact.name)
+ self.assertEqual(new_reg.email, contact.email)
+ self.assertEqual(new_reg.phone, contact.phone)
+
+
class TestEventTicketData(TestEventCommon):
def setUp(self):