summaryrefslogtreecommitdiff
path: root/addons/sms/tests
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2020-05-26 09:50:51 +0000
committerThibault Delavallée <tde@odoo.com>2020-05-26 10:35:58 +0000
commite8b1e2b7e448e0e29ca75c1585814788345c643b (patch)
tree4c9253613b7abe12699cac169850b15a7687dca1 /addons/sms/tests
parentc13c3318b2eb32366fe342edb934461c4efbffcd (diff)
[IMP] sms, link_tracker: clean some test helpers and add an helper to click SMS links
Clean some helpers, and add a helper to simulata a click on a shortened link embedded in an SMS. Task ID 2247037 Community PR #50384
Diffstat (limited to 'addons/sms/tests')
-rw-r--r--addons/sms/tests/common.py43
1 files changed, 25 insertions, 18 deletions
diff --git a/addons/sms/tests/common.py b/addons/sms/tests/common.py
index a3d1e3b292a..d225390f02c 100644
--- a/addons/sms/tests/common.py
+++ b/addons/sms/tests/common.py
@@ -66,6 +66,28 @@ class SMSCase(MockSMS):
""" Main test class to use when testing SMS integrations. Contains helpers and tools related
to notification sent by SMS. """
+ def _find_sms_sent(self, partner, number):
+ if number is None and partner:
+ number = partner.phone_get_sanitized_number()
+ sent_sms = next((sms for sms in self._sms if sms['number'] == number), None)
+ if not sent_sms:
+ raise AssertionError('sent sms not found for %s (number: %s)' % (partner, number))
+ return sent_sms
+
+ def _find_sms_sms(self, partner, number, status):
+ if number is None and partner:
+ number = partner.phone_get_sanitized_number()
+ domain = [('partner_id', '=', partner.id), ('number', '=', number)]
+ if status:
+ domain += [('state', '=', status)]
+
+ sms = self.env['sms.sms'].sudo().search(domain)
+ if not sms:
+ raise AssertionError('sms.sms not found for %s (number: %s / status %s)' % (partner, number, status))
+ if len(sms) > 1:
+ raise NotImplementedError()
+ return sms
+
def assertSMSSent(self, numbers, content=None):
""" Check sent SMS. Order is not checked. Each number should have received
the same content. Useful to check batch sending.
@@ -82,12 +104,7 @@ class SMSCase(MockSMS):
def assertSMSCanceled(self, partner, number, error_code, content=None):
""" Check canceled SMS. Search is done for a pair partner / number where
partner can be an empty recordset. """
- if number is None and partner:
- number = partner.phone_get_sanitized_number()
- sms = self.env['sms.sms'].sudo().search([
- ('partner_id', '=', partner.id), ('number', '=', number),
- ('state', '=', 'canceled')
- ])
+ sms = self._find_sms_sms(partner, number, 'canceled')
self.assertTrue(sms, 'SMS: not found canceled SMS for %s (number: %s)' % (partner, number))
self.assertEqual(sms.error_code, error_code)
if content is not None:
@@ -96,12 +113,7 @@ class SMSCase(MockSMS):
def assertSMSFailed(self, partner, number, error_code, content=None):
""" Check failed SMS. Search is done for a pair partner / number where
partner can be an empty recordset. """
- if number is None and partner:
- number = partner.phone_get_sanitized_number()
- sms = self.env['sms.sms'].sudo().search([
- ('partner_id', '=', partner.id), ('number', '=', number),
- ('state', '=', 'error')
- ])
+ sms = self._find_sms_sms(partner, number, 'error')
self.assertTrue(sms, 'SMS: not found failed SMS for %s (number: %s)' % (partner, number))
self.assertEqual(sms.error_code, error_code)
if content is not None:
@@ -110,12 +122,7 @@ class SMSCase(MockSMS):
def assertSMSOutgoing(self, partner, number, content=None):
""" Check outgoing SMS. Search is done for a pair partner / number where
partner can be an empty recordset. """
- if number is None and partner:
- number = partner.phone_get_sanitized_number()
- sms = self.env['sms.sms'].sudo().search([
- ('partner_id', '=', partner.id), ('number', '=', number),
- ('state', '=', 'outgoing')
- ])
+ sms = self._find_sms_sms(partner, number, 'outgoing')
self.assertTrue(sms, 'SMS: not found failed SMS for %s (number: %s)' % (partner, number))
if content is not None:
self.assertEqual(sms.body, content)