summaryrefslogtreecommitdiff
path: root/addons/event/tests/test_event_flow.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/event/tests/test_event_flow.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/event/tests/test_event_flow.py')
-rw-r--r--addons/event/tests/test_event_flow.py132
1 files changed, 132 insertions, 0 deletions
diff --git a/addons/event/tests/test_event_flow.py b/addons/event/tests/test_event_flow.py
new file mode 100644
index 00000000..e1602efe
--- /dev/null
+++ b/addons/event/tests/test_event_flow.py
@@ -0,0 +1,132 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+import datetime
+
+from dateutil.relativedelta import relativedelta
+
+from odoo.addons.event.tests.common import TestEventCommon
+from odoo.exceptions import ValidationError
+from odoo.tests.common import Form
+from odoo.tools import mute_logger
+
+
+class TestEventUI(TestEventCommon):
+
+ def test_event_registration_partner_sync(self):
+ """ Ensure onchange on partner_id is kept for interface, not for computed
+ fields. """
+ registration_form = Form(self.env['event.registration'].with_context(
+ default_name='WrongName',
+ default_event_id=self.event_0.id
+ ))
+ self.assertEqual(registration_form.event_id, self.event_0)
+ self.assertEqual(registration_form.name, 'WrongName')
+ self.assertFalse(registration_form.email)
+ self.assertFalse(registration_form.phone)
+ self.assertFalse(registration_form.mobile)
+
+ # trigger onchange
+ registration_form.partner_id = self.event_customer
+ self.assertEqual(registration_form.name, self.event_customer.name)
+ self.assertEqual(registration_form.email, self.event_customer.email)
+ self.assertEqual(registration_form.phone, self.event_customer.phone)
+ self.assertEqual(registration_form.mobile, self.event_customer.mobile)
+
+ # save, check record matches Form values
+ registration = registration_form.save()
+ self.assertEqual(registration.partner_id, self.event_customer)
+ self.assertEqual(registration.name, self.event_customer.name)
+ self.assertEqual(registration.email, self.event_customer.email)
+ self.assertEqual(registration.phone, self.event_customer.phone)
+ self.assertEqual(registration.mobile, self.event_customer.mobile)
+
+ # allow writing on some fields independently from customer config
+ registration.write({'phone': False, 'mobile': False})
+ self.assertFalse(registration.phone)
+ self.assertFalse(registration.mobile)
+
+ # reset partner should not reset other fields
+ registration.write({'partner_id': False})
+ self.assertEqual(registration.partner_id, self.env['res.partner'])
+ self.assertEqual(registration.name, self.event_customer.name)
+ self.assertEqual(registration.email, self.event_customer.email)
+ self.assertFalse(registration.phone)
+ self.assertFalse(registration.mobile)
+
+ # update to a new partner not through UI -> update only void feilds
+ registration.write({'partner_id': self.event_customer2.id})
+ self.assertEqual(registration.partner_id, self.event_customer2)
+ self.assertEqual(registration.name, self.event_customer.name)
+ self.assertEqual(registration.email, self.event_customer.email)
+ self.assertEqual(registration.phone, self.event_customer2.phone)
+ self.assertEqual(registration.mobile, self.event_customer2.mobile)
+
+
+class TestEventFlow(TestEventCommon):
+
+ @mute_logger('odoo.addons.base.models.ir_model', 'odoo.models')
+ def test_event_auto_confirm(self):
+ """ Basic event management with auto confirmation """
+ # EventUser creates a new event: ok
+ 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),
+ 'date_end': datetime.datetime.now() + relativedelta(days=1),
+ 'seats_max': 2,
+ 'seats_limited': True,
+ })
+ self.assertTrue(test_event.auto_confirm)
+
+ # EventUser create registrations for this event
+ 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.env['event.registration'].with_user(self.user_eventuser).create({
+ 'name': 'TestReg2',
+ 'event_id': test_event.id,
+ })
+ self.assertEqual(test_reg2.state, 'open', 'Event: auto_confirmation of registration failed')
+ self.assertEqual(test_event.seats_reserved, 2, 'Event: wrong number of reserved seats after confirmed registration')
+
+ # EventUser create registrations for this event: too much registrations
+ with self.assertRaises(ValidationError):
+ self.env['event.registration'].with_user(self.user_eventuser).create({
+ 'name': 'TestReg3',
+ 'event_id': test_event.id,
+ })
+
+ # EventUser validates registrations
+ test_reg1.action_set_done()
+ self.assertEqual(test_reg1.state, 'done', 'Event: wrong state of attended registration')
+ self.assertEqual(test_event.seats_used, 1, 'Event: incorrect number of attendees after closing registration')
+ test_reg2.action_set_done()
+ self.assertEqual(test_reg1.state, 'done', 'Event: wrong state of attended registration')
+ self.assertEqual(test_event.seats_used, 2, 'Event: incorrect number of attendees after closing registration')
+
+ @mute_logger('odoo.addons.base.models.ir_model', 'odoo.models')
+ def test_event_flow(self):
+ """ 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_limited': True,
+ '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({
+ 'name': 'TestReg1',
+ 'event_id': test_event.id,
+ })
+ self.assertEqual(
+ test_reg1.state, 'draft',
+ 'Event: new registration should not be confirmed with auto_confirmation parameter being False')