[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 X-original-commit odoo/odoo@6b0346bbb5 X-original-commit: 7f0c7339c39b05e20efa163d0ea91f7dd5c0017c
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -108,3 +108,10 @@ class TestEventOnlineCommon(TestEventCommon, EventDtPatcher):
|
||||
'date_begin': datetime.combine(cls.reference_now, time(7, 0)) - timedelta(days=1),
|
||||
'date_end': datetime.combine(cls.reference_now, time(13, 0)) + timedelta(days=1),
|
||||
})
|
||||
|
||||
cls.event_customer.write({
|
||||
'website_description': '<p>I am your best customer, %s</p>' % cls.event_customer.name,
|
||||
})
|
||||
cls.event_customer2.write({
|
||||
'website_description': '<p>I am your best customer, %s</p>' % cls.event_customer2.name,
|
||||
})
|
||||
|
||||
@@ -7,6 +7,77 @@ from unittest.mock import patch
|
||||
from odoo import fields
|
||||
from odoo.addons.website.models.website_visitor import WebsiteVisitor
|
||||
from odoo.addons.website_event.tests.common import TestEventOnlineCommon
|
||||
from odoo.tests.common import users
|
||||
|
||||
|
||||
class TestTrackData(TestEventOnlineCommon):
|
||||
|
||||
@users('user_eventmanager')
|
||||
def test_track_partner_sync(self):
|
||||
""" Test registration computed fields about partner """
|
||||
test_email = '"Nibbler In Space" <nibbler@futurama.example.com>'
|
||||
test_phone = '0456001122'
|
||||
test_bio = '<p>UserInput</p>'
|
||||
test_bio_void = '<p><br/></p>'
|
||||
|
||||
event = self.env['event.event'].browse(self.event_0.ids)
|
||||
customer = self.env['res.partner'].browse(self.event_customer.id)
|
||||
|
||||
# take all from partner
|
||||
new_track = self.env['event.track'].create({
|
||||
'event_id': event.id,
|
||||
'name': 'Mega Track',
|
||||
'partner_id': customer.id,
|
||||
})
|
||||
self.assertEqual(new_track.partner_id, customer)
|
||||
self.assertEqual(new_track.partner_name, customer.name)
|
||||
self.assertEqual(new_track.partner_email, customer.email)
|
||||
self.assertEqual(new_track.partner_phone, customer.phone)
|
||||
self.assertEqual(new_track.partner_biography, customer.website_description)
|
||||
self.assertIn(customer.name, new_track.partner_biography, 'Low-level test: ensure correctly updated')
|
||||
|
||||
# partial update
|
||||
new_track = self.env['event.track'].create({
|
||||
'event_id': event.id,
|
||||
'name': 'Mega Track',
|
||||
'partner_id': customer.id,
|
||||
'partner_name': 'Nibbler In Space',
|
||||
'partner_email': test_email,
|
||||
})
|
||||
self.assertEqual(new_track.partner_id, customer)
|
||||
self.assertEqual(
|
||||
new_track.partner_name, 'Nibbler In Space',
|
||||
'Track should take user input over computed partner value')
|
||||
self.assertEqual(
|
||||
new_track.partner_email, test_email,
|
||||
'Track should take user input over computed partner value')
|
||||
# self.assertEqual(
|
||||
# new_track.partner_phone, customer.phone,
|
||||
# 'Track should take partner value if not user input')
|
||||
|
||||
# already filled information should not be updated
|
||||
new_track = self.env['event.track'].create({
|
||||
'event_id': event.id,
|
||||
'name': 'Mega Track',
|
||||
'partner_name': 'Nibbler In Space',
|
||||
'partner_phone': test_phone,
|
||||
'partner_biography': test_bio,
|
||||
})
|
||||
self.assertEqual(new_track.partner_name, 'Nibbler In Space')
|
||||
self.assertEqual(new_track.partner_email, False)
|
||||
self.assertEqual(new_track.partner_phone, test_phone)
|
||||
self.assertEqual(new_track.partner_biography, test_bio)
|
||||
new_track.write({'partner_id': customer.id})
|
||||
self.assertEqual(new_track.partner_id, customer)
|
||||
self.assertEqual(
|
||||
new_track.partner_name, customer.name,
|
||||
'Track customer should take over existing value')
|
||||
self.assertEqual(
|
||||
new_track.partner_email, customer.email,
|
||||
'Track customer should take over existing value')
|
||||
self.assertEqual(
|
||||
new_track.partner_phone, customer.phone,
|
||||
'Track customer should take over existing value')
|
||||
|
||||
|
||||
class TestTrackSuggestions(TestEventOnlineCommon):
|
||||
|
||||
Reference in New Issue
Block a user