diff options
| author | Thibault Delavallée <tde@odoo.com> | 2020-05-26 09:50:51 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2020-05-26 10:35:58 +0000 |
| commit | e8b1e2b7e448e0e29ca75c1585814788345c643b (patch) | |
| tree | 4c9253613b7abe12699cac169850b15a7687dca1 /addons/sms/tests | |
| parent | c13c3318b2eb32366fe342edb934461c4efbffcd (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.py | 43 |
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) |
