URPOSE Prepare code cleaning and optimization in mail, mass_mailing and SMS by cleaning models for readability and code complexity and footprint reduction. SPECIFICATIONS Add tool methods and asserts for link tracker tests. Add tool methods and assets for mass mailing tests, notably about mailing traces and their link with emails. Merge existing and duplicated tests and rewrite them a bit. Rename and improve test_mass_mailing models. LINKS Prepares task ID 2238597 (notification and trace models cleaning) Task ID 1906925 (mass mailing tests cleaning) PR #50169 Related: odoo/enterprise#10180 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
67 lines
2.9 KiB
Python
67 lines
2.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from odoo.addons.phone_validation.tools import phone_validation
|
|
from odoo.addons.mass_mailing_sms.tests import common as mass_mailing_sms_common
|
|
from odoo.addons.test_mail.tests import common as test_mail_common
|
|
from odoo.addons.test_mass_mailing.tests import common as test_mass_mailing_common
|
|
|
|
|
|
class TestSMSCommon(test_mass_mailing_common.TestMassMailCommon, mass_mailing_sms_common.MockSMS):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TestSMSCommon, cls).setUpClass()
|
|
cls.user_employee.write({'login': 'employee'})
|
|
|
|
# update country to belgium in order to test sanitization of numbers
|
|
cls.user_employee.company_id.write({'country_id': cls.env.ref('base.be').id})
|
|
|
|
# some numbers for testing
|
|
cls.random_numbers_str = '+32456998877, 0456665544'
|
|
cls.random_numbers = cls.random_numbers_str.split(', ')
|
|
cls.random_numbers_san = [phone_validation.phone_format(number, 'BE', '32', force_format='E164') for number in cls.random_numbers]
|
|
cls.test_numbers = ['+32456010203', '0456 04 05 06', '0032456070809']
|
|
cls.test_numbers_san = [phone_validation.phone_format(number, 'BE', '32', force_format='E164') for number in cls.test_numbers]
|
|
|
|
# some numbers for mass testing
|
|
cls.mass_numbers = ['04561%s2%s3%s' % (x, x, x) for x in range(0, 10)]
|
|
cls.mass_numbers_san = [phone_validation.phone_format(number, 'BE', '32', force_format='E164') for number in cls.mass_numbers]
|
|
|
|
@classmethod
|
|
def _create_sms_template(cls, model, body=False):
|
|
return cls.env['sms.template'].create({
|
|
'name': 'Test Template',
|
|
'model_id': cls.env['ir.model']._get(model).id,
|
|
'body': body if body else 'Dear ${object.display_name} this is an SMS.'
|
|
})
|
|
|
|
@classmethod
|
|
def _create_records_for_batch(cls, model, count):
|
|
records = cls.env['mail.test.sms']
|
|
partners = cls.env['res.partner']
|
|
country_id = cls.env.ref('base.be').id,
|
|
for x in range(count):
|
|
partners += cls.env['res.partner'].with_context(**cls._test_context).create({
|
|
'name': 'Partner_%s' % (x),
|
|
'email': '_test_partner_%s@example.com' % (x),
|
|
'country_id': country_id,
|
|
'mobile': '047500%02d%02d' % (x, x)
|
|
})
|
|
records += cls.env[model].with_context(**cls._test_context).create({
|
|
'name': 'Test_%s' % (x),
|
|
'customer_id': partners[x].id,
|
|
})
|
|
cls.records = cls._reset_mail_context(records)
|
|
cls.partners = partners
|
|
|
|
|
|
class TestRecipients(test_mail_common.TestRecipients):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TestRecipients, cls).setUpClass()
|
|
cls.partner_numbers = [
|
|
phone_validation.phone_format(partner.mobile, partner.country_id.code, partner.country_id.phone_code, force_format='E164')
|
|
for partner in (cls.partner_1 | cls.partner_2)
|
|
]
|