summaryrefslogtreecommitdiff
path: root/addons/test_mail_full
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2020-04-30 13:11:26 +0000
committerThibault Delavallée <tde@odoo.com>2020-04-30 14:47:49 +0000
commit9a3581d925af1a00849418608fd5db6d3cae203b (patch)
treee5a49ac895eace35b139bc8b90b71541e336d448 /addons/test_mail_full
parentb2008ade4cffdf0caea9600333af4b0b04cdd442 (diff)
[FIX] sms: fix crash when using composer on a record without valid phone number
When no valid phone number was found on a record, and when using the composer in single recipient mode, you had a crash at sending as composer tried to write on a field called False. Instead we just take the first available phone field of the record. As they are all void we can update them safely. Task ID 2244192 X-original-commit: 2306d7d79d8e64597912f15365cede7473589731
Diffstat (limited to 'addons/test_mail_full')
-rw-r--r--addons/test_mail_full/tests/test_sms_composer.py32
-rw-r--r--addons/test_mail_full/tests/test_sms_post.py14
2 files changed, 46 insertions, 0 deletions
diff --git a/addons/test_mail_full/tests/test_sms_composer.py b/addons/test_mail_full/tests/test_sms_composer.py
index 4fc596c1985..44df9efd951 100644
--- a/addons/test_mail_full/tests/test_sms_composer.py
+++ b/addons/test_mail_full/tests/test_sms_composer.py
@@ -155,6 +155,38 @@ class TestSMSComposerComment(test_mail_full_common.TestSMSCommon, test_mail_full
self.test_record.flush()
self.assertEqual(self.test_record.phone_nbr, self.random_numbers[0])
+ def test_composer_comment_wo_partner_wo_value_update(self):
+ """ Test record without partner and without phone values: should allow updating first found phone field """
+ self.test_record.write({
+ 'customer_id': False,
+ 'phone_nbr': False,
+ 'mobile_nbr': False,
+ })
+ default_field_name = self.env['mail.test.sms']._sms_get_number_fields()[0]
+
+ with self.with_user('employee'):
+ composer = self.env['sms.composer'].with_context(
+ active_model='mail.test.sms', active_id=self.test_record.id,
+ default_composition_mode='comment',
+ ).create({
+ 'body': self._test_body,
+ })
+ self.assertFalse(composer.recipient_single_number_itf)
+ self.assertFalse(composer.recipient_single_number)
+ self.assertEqual(composer.number_field_name, default_field_name)
+
+ composer.write({
+ 'recipient_single_number_itf': self.random_numbers_san[0],
+ })
+ self.assertEqual(composer.recipient_single_number_itf, self.random_numbers_san[0])
+ self.assertFalse(composer.recipient_single_number)
+
+ with self.mockSMSGateway():
+ messages = composer._action_send_sms()
+
+ self.assertEqual(self.test_record[default_field_name], self.random_numbers_san[0])
+ self.assertSMSNotification([{'partner': self.env['res.partner'], 'number': self.random_numbers_san[0]}], self._test_body, messages)
+
def test_composer_numbers_no_model(self):
with self.with_user('employee'):
composer = self.env['sms.composer'].with_context(
diff --git a/addons/test_mail_full/tests/test_sms_post.py b/addons/test_mail_full/tests/test_sms_post.py
index b28ac3a0a37..26b5c5268b5 100644
--- a/addons/test_mail_full/tests/test_sms_post.py
+++ b/addons/test_mail_full/tests/test_sms_post.py
@@ -125,6 +125,20 @@ class TestSMSPost(test_mail_full_common.TestSMSCommon, test_mail_full_common.Tes
self.assertSMSNotification([{'number': self.test_record.mobile_nbr}], self._test_body, messages)
+ def test_message_sms_on_field_wo_partner_wo_value(self):
+ """ Test record without a partner and without phone values. """
+ self.test_record.write({
+ 'customer_id': False,
+ 'phone_nbr': False,
+ 'mobile_nbr': False,
+ })
+
+ with self.with_user('employee'), self.mockSMSGateway():
+ test_record = self.env['mail.test.sms'].browse(self.test_record.id)
+ messages = test_record._message_sms(self._test_body)
+
+ self.assertNoSMSNotification(messages)
+
def test_message_sms_on_field_wo_partner_default_field(self):
self.test_record.write({'customer_id': False})