summaryrefslogtreecommitdiff
path: root/addons/sms/tests
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2020-04-29 11:38:20 +0000
committerThibault Delavallée <tde@odoo.com>2020-05-26 10:35:58 +0000
commit4a2ac044f8bd4a5a1f96f0e45c008473dc15eec3 (patch)
tree26d9b7406dadcbe299941f371803f363e6426946 /addons/sms/tests
parenta874dfa08abd5b3c54e29c0257dfa23118b910da (diff)
[IMP] (test_)(mass_)mail(_full): rename and reorganize mail related test classes
Modules holding tests and helpers * link_tracker: mainly mock, asserts and tools for link tracker tests (MockLinkTracker); * mail: mainly gateway mock and base for mail tests * MockEmail -> mocks for mail gateway; * MailCase -> tools and asserts for mail tests; * MailCommon -> base for mail functional tests); * sms: mainly SMS gateway mock and base for sms tests * MockSMS -> mocks for SMS gateway; * SMS Case -> tools and asserts for mail / SMS tests; * SMSCommon -> update of MailCommon with SMS capabilities); * mass_mailing: mainly asserts and tools for mass mailing tests * MassMailCase -> update of MailCase for mass mailing tools and asserts; * MassMailCommon -> update of MailCommon with mass mailing); * mass_mailing_sms: mainly asserts and tools for mass SMS tests * MockMassSMS -> update of MockSMS for mass SMS tools and asserts; * MassSMSCommon -> update of MassMailCommon with SMS capabilities); Modules for tests * test_mail: module for mail app tests (TestMailCommon); * test_mass_mailing: module for mass mailing app tests (TestMassMailCommon); * test_mail_full: tests integrating all discuss features, currently mainly mail and SMS (TestMailFullCommon); Enterprise: update test_mail_enterprise and test_marketing_automation Task ID 2247037 Community PR odoo/odoo#50384 Enterprise PR odoo/enterprise#10266 Upgrade PR odoo/upgrade#1122
Diffstat (limited to 'addons/sms/tests')
-rw-r--r--addons/sms/tests/common.py42
1 files changed, 39 insertions, 3 deletions
diff --git a/addons/sms/tests/common.py b/addons/sms/tests/common.py
index e90fcf9a384..901939d15c2 100644
--- a/addons/sms/tests/common.py
+++ b/addons/sms/tests/common.py
@@ -4,8 +4,9 @@ from contextlib import contextmanager
from unittest.mock import patch
from odoo import exceptions, tools
-from odoo.addons.phone_validation.tools import phone_validation
from odoo.tests import common
+from odoo.addons.mail.tests.common import MailCommon
+from odoo.addons.phone_validation.tools import phone_validation
from odoo.addons.sms.models.sms_api import SmsApi
@@ -13,11 +14,11 @@ class MockSMS(common.BaseCase):
def tearDown(self):
super(MockSMS, self).tearDown()
- self._clear_sms_sent
+ self._clear_sms_sent()
@contextmanager
def mockSMSGateway(self, sim_error=None, nbr_t_error=None):
- self._sms = []
+ self._clear_sms_sent()
def _contact_iap(local_endpoint, params):
# mock single sms sending
@@ -60,6 +61,11 @@ class MockSMS(common.BaseCase):
def _clear_sms_sent(self):
self._sms = []
+
+class SMSCase(MockSMS):
+ """ Main test class to use when testing SMS integrations. Contains helpers and tools related
+ to notification sent by SMS. """
+
def assertSMSSent(self, numbers, content):
""" Check sent SMS. Order is not checked. Each number should have received
the same content. Useful to check batch sending.
@@ -180,3 +186,33 @@ class MockSMS(common.BaseCase):
self.assertEqual(message.subtype_id, self.env.ref('mail.mt_note'))
self.assertEqual(message.message_type, 'sms')
self.assertEqual(tools.html2plaintext(message.body).rstrip('\n'), body)
+
+
+class SMSCommon(MailCommon, MockSMS):
+
+ @classmethod
+ def setUpClass(cls):
+ super(SMSCommon, 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.'
+ })