PURPOSE As event will soon evolve (onchange -> compute, code improvements, addition of new features) cleaning and improving tests is necessary to help avoid issues. SPECIFICATIONS Clean existing tests: lessen data / variables, try to remove unnecessary tests or merge duplicates. Add new tests, notably event type configuration copy onto event records is not well tested. Event computed fields are also more tested. Some access tests are added, more a base for future addition as only a few use cases are covered. LINKS Side effect of Task ID 2089156 (event onchange to compute) Community PR odoo/odoo#43127 Enterprise PR odoo/enterprise#7656
96 lines
4.0 KiB
Python
96 lines
4.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from datetime import datetime, timedelta
|
|
|
|
from odoo import fields
|
|
from odoo.addons.mail.tests.common import mail_new_test_user
|
|
from odoo.tests import common
|
|
|
|
|
|
class TestEventCommon(common.SavepointCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TestEventCommon, cls).setUpClass()
|
|
|
|
# Test users to use through the various tests
|
|
cls.user_portal = mail_new_test_user(
|
|
cls.env, login='portal_test',
|
|
name='Patrick Portal', email='patrick.portal@test.example.com',
|
|
notification_type='email', company_id=cls.env.ref("base.main_company").id,
|
|
groups='base.group_portal')
|
|
cls.user_employee = mail_new_test_user(
|
|
cls.env, login='user_employee',
|
|
name='Eglantine Employee', email='eglantine.employee@test.example.com',
|
|
tz='Europe/Brussels', notification_type='inbox',
|
|
company_id=cls.env.ref("base.main_company").id,
|
|
groups='base.group_user',
|
|
)
|
|
cls.user_eventuser = mail_new_test_user(
|
|
cls.env, login='user_eventuser',
|
|
name='Ursule EventUser', email='ursule.eventuser@test.example.com',
|
|
tz='Europe/Brussels', notification_type='inbox',
|
|
company_id=cls.env.ref("base.main_company").id,
|
|
groups='base.group_user,event.group_event_user',
|
|
)
|
|
cls.user_eventmanager = mail_new_test_user(
|
|
cls.env, login='user_eventmanager',
|
|
name='Martine EventManager', email='martine.eventmanager@test.example.com',
|
|
tz='Europe/Brussels', notification_type='inbox',
|
|
company_id=cls.env.ref("base.main_company").id,
|
|
groups='base.group_user,event.group_event_manager',
|
|
)
|
|
|
|
cls.customer = cls.env['res.partner'].create({
|
|
'name': 'Constantin Customer',
|
|
'email': 'constantin@example.com',
|
|
'country_id': cls.env.ref('base.be').id,
|
|
'phone': '0485112233',
|
|
})
|
|
cls.event_type_complex = cls.env['event.type'].create({
|
|
'name': 'Update Type',
|
|
'auto_confirm': True,
|
|
'is_online': False,
|
|
'has_seats_limitation': True,
|
|
'default_registration_min': 10,
|
|
'default_registration_max': 30,
|
|
'use_timezone': True,
|
|
'default_timezone': 'Europe/Paris',
|
|
'use_hashtag': True,
|
|
'default_hashtag': 'amazing',
|
|
'use_mail_schedule': True,
|
|
'event_type_mail_ids': [
|
|
(0, 0, { # right at subscription
|
|
'interval_unit': 'now',
|
|
'interval_type': 'after_sub',
|
|
'template_id': cls.env['ir.model.data'].xmlid_to_res_id('event.event_subscription')}),
|
|
(0, 0, { # 1 days before event
|
|
'interval_nbr': 1,
|
|
'interval_unit': 'days',
|
|
'interval_type': 'before_event',
|
|
'template_id': cls.env['ir.model.data'].xmlid_to_res_id('event.event_reminder')}),
|
|
],
|
|
})
|
|
cls.event_0 = cls.env['event.event'].create({
|
|
'name': 'TestEvent',
|
|
'auto_confirm': True,
|
|
'date_begin': fields.Datetime.to_string(datetime.today() + timedelta(days=1)),
|
|
'date_end': fields.Datetime.to_string(datetime.today() + timedelta(days=15)),
|
|
'date_tz': 'Europe/Brussels',
|
|
})
|
|
|
|
# set country in order to format belgium numbers
|
|
cls.event_0.company_id.write({'country_id': cls.env.ref('base.be').id})
|
|
|
|
@classmethod
|
|
def _create_registrations(cls, event, reg_count):
|
|
# create some registrations
|
|
registrations = cls.env['event.registration'].create([{
|
|
'event_id': event.id,
|
|
'name': 'Test Registration %s' % x,
|
|
'email': '_test_reg_%s@example.com' % x,
|
|
'phone': '04560000%s%s' % (x, x),
|
|
} for x in range(0, reg_count)])
|
|
return registrations
|