odoo18/addons/test_mail_sms/tests/test_sms_mixin.py

110 lines
5.2 KiB
Python

from odoo.addons.sms.tests.common import SMSCommon
from odoo.addons.test_mail_sms.tests.common import TestSMSRecipients
from odoo.tests import Form, tagged
@tagged('sms_composer')
class TestSMSNoThread(SMSCommon, TestSMSRecipients):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls._test_body_dyn = 'Hello {{ object.name }} zizisse an SMS.'
cls._test_body_sta = 'Hello Zboing'
cls.test_nothreads = cls.env['sms.test.nothread'].create([
{
'name': 'Test',
'customer_id': cls.partner_1.id,
}, {
'name': 'Test',
'customer_id': cls.partner_2.id,
}, {
'name': 'Test (no partner)',
'customer_id': False,
},
])
cls.sms_template = cls._create_sms_template(
cls.test_nothreads._name,
body=cls._test_body_dyn,
)
def test_composer_comment(self):
with self.with_user('employee'):
test_record = self.test_nothreads[0].with_env(self.env)
composer_form = Form(self.env['sms.composer'].with_context(
default_res_id=test_record.id,
default_res_model=test_record._name,
))
composer_form.body = self._test_body_sta
composer = composer_form.save()
self.assertTrue(composer.comment_single_recipient)
self.assertEqual(composer.composition_mode, 'comment')
self.assertEqual(composer.recipient_valid_count, 0)
self.assertEqual(composer.recipient_invalid_count, 1)
self.assertEqual(composer.recipient_single_description, self.partner_1.name)
self.assertEqual(composer.recipient_single_number, '+32456001122')
self.assertEqual(composer.recipient_single_number_itf, '+32456001122')
self.assertTrue(composer.recipient_single_valid)
self.assertEqual(composer.number_field_name, 'mobile')
self.assertFalse(composer.numbers)
self.assertFalse(composer.sanitized_numbers)
with self.mockSMSGateway():
composer._action_send_sms()
def test_composer_comment_res_ids(self):
with self.with_user('employee'):
test_record = self.test_nothreads[0].with_env(self.env)
composer_form = Form(self.env['sms.composer'].with_context(
default_res_ids=test_record.ids,
default_res_model=test_record._name,
))
composer_form.body = self._test_body_sta
composer = composer_form.save()
# TDE FIXME: mono/mass mode should be fixed
self.assertFalse(composer.comment_single_recipient)
self.assertEqual(composer.composition_mode, 'comment')
self.assertEqual(composer.recipient_valid_count, 1)
self.assertEqual(composer.recipient_invalid_count, 0)
self.assertFalse(composer.recipient_single_description)
self.assertFalse(composer.recipient_single_number)
self.assertFalse(composer.recipient_single_number_itf)
self.assertFalse(composer.recipient_single_valid)
self.assertFalse(composer.number_field_name)
self.assertFalse(composer.numbers)
self.assertFalse(composer.sanitized_numbers)
with self.mockSMSGateway():
composer._action_send_sms()
def test_composer_comment_res_users(self):
for ctx, expected in [
({}, {}),
({'default_number_field_name': 'mobile'}, {}),
]:
with self.subTest(ctx=ctx):
with self.with_user('employee'):
ctx['default_res_id'] = self.user_admin.id
ctx['default_res_model'] = self.user_admin._name
composer_form = Form(self.env['sms.composer'].with_context(**ctx))
composer_form.body = self._test_body_sta
composer = composer_form.save()
self.assertTrue(composer.comment_single_recipient)
self.assertEqual(composer.composition_mode, 'comment')
if ctx.get('default_number_field_name') == 'mobile':
self.assertEqual(composer.recipient_valid_count, 0)
self.assertEqual(composer.recipient_invalid_count, 1)
else:
self.assertEqual(composer.recipient_valid_count, 1)
self.assertEqual(composer.recipient_invalid_count, 0)
self.assertEqual(composer.recipient_single_description, self.user_admin.name)
self.assertEqual(composer.recipient_single_number, '+32455135790')
self.assertEqual(composer.recipient_single_number_itf, '+32455135790')
self.assertTrue(composer.recipient_single_valid)
self.assertEqual(composer.number_field_name, ctx.get('default_number_field_name', 'phone'))
self.assertFalse(composer.numbers)
self.assertFalse(composer.sanitized_numbers)
with self.mockSMSGateway():
composer._action_send_sms()