From 6bb907ed35c1d6695e1e85128a2e1b91a737eeee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Hennecart?= Date: Fri, 9 Oct 2020 10:19:05 +0000 Subject: [PATCH] [FIX] test_mass_mailing: add test for the send_mail_test action This test ensures that when using the test sending tool of mass mailing (sms) a wrong jinja content is detected if we have any record available to evaluate it. PR odoo/odoo#55696 Task ID-2312442 X-original-commit: 183a7677616ac36ed06109e22288aacb185ac097 --- addons/test_mail_full/tests/test_mass_sms.py | 30 ++++++++++++++ .../tests/test_mailing_internals.py | 41 +++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/addons/test_mail_full/tests/test_mass_sms.py b/addons/test_mail_full/tests/test_mass_sms.py index 2bc1760cc60..a3e3d35e14a 100644 --- a/addons/test_mail_full/tests/test_mass_sms.py +++ b/addons/test_mail_full/tests/test_mass_sms.py @@ -5,6 +5,7 @@ from odoo.addons.phone_validation.tools import phone_validation from odoo.addons.test_mail_full.tests.common import TestMailFullCommon from odoo.tests import tagged +from odoo.tools import mute_logger @tagged('mass_mailing') @@ -147,3 +148,32 @@ class TestMassSMS(TestMailFullCommon): [{'partner': record.customer_id, 'number': self.records_numbers[i+5], 'content': 'Dear %s this is a mass SMS.' % record.display_name} for i, record in enumerate(self.records[5:])], self.mailing, self.records[5:], check_sms=True ) + + @mute_logger('odoo.addons.mail.models.mail_render_mixin') + def test_mass_sms_test_button(self): + mailing = self.env['mailing.mailing'].create({ + 'name': 'TestButton', + 'subject': 'Subject ${object.name}', + 'preview': 'Preview ${object.name}', + 'state': 'draft', + 'mailing_type': 'sms', + 'body_plaintext': 'Hello ${object.name}', + 'mailing_model_id': self.env['ir.model']._get('res.partner').id, + }) + mailing_test = self.env['mailing.sms.test'].with_user(self.user_marketing).create({ + 'numbers': '+32456001122', + 'mailing_id': mailing.id, + }) + + with self.with_user('user_marketing'): + with self.mockSMSGateway(): + mailing_test.action_send_sms() + + # Test if bad jinja in the body raises an error + mailing.write({ + 'body_plaintext': 'Hello ${object.name_id.id}', + }) + + with self.with_user('user_marketing'): + with self.mock_mail_gateway(), self.assertRaises(Exception): + mailing_test.action_send_sms() diff --git a/addons/test_mass_mailing/tests/test_mailing_internals.py b/addons/test_mass_mailing/tests/test_mailing_internals.py index 48eab1853bb..5d284ef6d09 100644 --- a/addons/test_mass_mailing/tests/test_mailing_internals.py +++ b/addons/test_mass_mailing/tests/test_mailing_internals.py @@ -4,6 +4,7 @@ from odoo.addons.test_mass_mailing.tests.common import TestMassMailCommon from odoo.addons.test_mass_mailing.data.mail_test_data import MAIL_TEMPLATE from odoo.tests.common import users +from odoo.tools import mute_logger class TestMailingInternals(TestMassMailCommon): @@ -22,6 +23,46 @@ class TestMailingInternals(TestMassMailCommon): 'alias_contact': 'everyone' }) + @mute_logger('odoo.addons.mail.models.mail_render_mixin') + def test_mailing_test_button(self): + mailing = self.env['mailing.mailing'].create({ + 'name': 'TestButton', + 'subject': 'Subject ${object.name}', + 'preview': 'Preview ${object.name}', + 'state': 'draft', + 'mailing_type': 'mail', + 'body_html': '

Hello ${object.name}

', + 'mailing_model_id': self.env['ir.model']._get('res.partner').id, + }) + mailing_test = self.env['mailing.mailing.test'].create({ + 'email_to': 'test@test.com', + 'mass_mailing_id': mailing.id, + }) + + with self.mock_mail_gateway(): + mailing_test.send_mail_test() + + # Test if bad jinja in the subject raises an error + mailing.write({'subject': 'Subject ${object.name_id.id}'}) + with self.mock_mail_gateway(), self.assertRaises(Exception): + mailing_test.send_mail_test() + + # Test if bad jinja in the body raises an error + mailing.write({ + 'subject': 'Subject ${object.name}', + 'body_html': '

Hello ${object.name_id.id}

', + }) + with self.mock_mail_gateway(), self.assertRaises(Exception): + mailing_test.send_mail_test() + + # Test if bad jinja in the preview raises an error + mailing.write({ + 'body_html': '

Hello ${object.name}

', + 'preview': 'Preview ${object.name_id.id}', + }) + with self.mock_mail_gateway(), self.assertRaises(Exception): + mailing_test.send_mail_test() + def test_mailing_trace_update(self): customers = self.env['res.partner'] for x in range(0, 3):