PURPOSE Cleanup and improve composer-related tests. As composer will soon be improved better ensure we don't break flows. SPECIFCIATIONS Cleanup existing tests: rename, make it use tools, reoder them. Add some tests about composer in order to better spot changes and differences as well as to help debugging mail composer code update. Notably add tests with Form tool, add tests for reply-to computation, auto-delete, mail server. Performance tests about composer are added, notably using the Form tool. This helps determining differences between creating / manipulating a composer in code and in UI. Indeed notably onchange and some side effects may lead to different query counters, which is the case as highlighted here. Tests involving attachments are also added to see their impact on posting process. Task-2673913 (TestMail: Cleanup and improve test coverage) Part-of: odoo/odoo#86393
81 lines
2.9 KiB
Python
81 lines
2.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo.addons.mail.tests.common import MailCommon
|
|
from odoo.tests import tagged, users
|
|
|
|
|
|
@tagged('mail_composer')
|
|
class TestMailComposer(MailCommon):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TestMailComposer, cls).setUpClass()
|
|
cls.env['ir.config_parameter'].set_param('mail.restrict.template.rendering', True)
|
|
cls.user_employee.groups_id -= cls.env.ref('mail.group_mail_template_editor')
|
|
cls.test_record = cls.env['res.partner'].with_context(cls._test_context).create({
|
|
'name': 'Test',
|
|
})
|
|
cls.body_html = """<div>
|
|
<h1>Hello sir!</h1>
|
|
<p>Here! <a href="https://www.example.com">
|
|
<!--[if mso]>
|
|
<i style="letter-spacing: 25px; mso-font-width: -100%; mso-text-raise: 30pt;"> </i>
|
|
<![endif]-->
|
|
A link for you! <!-- my favorite example -->
|
|
<!--[if mso]>
|
|
<i style="letter-spacing: 25px; mso-font-width: -100%;"> </i>
|
|
<![endif]-->
|
|
</a> Make good use of it.</p>
|
|
</div>"""
|
|
|
|
cls.mail_template = cls.env['mail.template'].create({
|
|
'name': 'Test template with mso conditionals',
|
|
'subject': 'MSO FTW',
|
|
'body_html': cls.body_html,
|
|
'lang': '{{ object.lang }}',
|
|
'auto_delete': True,
|
|
'model_id': cls.env.ref('base.model_res_partner').id,
|
|
})
|
|
|
|
@users('employee')
|
|
def test_mail_mass_mode_template_with_mso(self):
|
|
mail_compose_message = self.env['mail.compose.message'].create({
|
|
'composition_mode': 'mass_mail',
|
|
'model': 'res.partner',
|
|
'template_id': self.mail_template.id,
|
|
'subject': 'MSO FTW',
|
|
})
|
|
|
|
values = mail_compose_message.get_mail_values(self.partner_employee.ids)
|
|
|
|
self.assertIn(
|
|
self.body_html,
|
|
values[self.partner_employee.id]['body_html'],
|
|
'We must preserve (mso) comments in email html'
|
|
)
|
|
|
|
@users('employee')
|
|
def test_mail_mass_mode_compose_with_mso(self):
|
|
composer = self.env['mail.compose.message'].with_context({
|
|
'default_model': self.test_record._name,
|
|
'default_composition_mode': 'mass_mail',
|
|
'active_ids': [self.test_record.id],
|
|
'active_model': self.test_record._name,
|
|
'active_id': self.test_record.id
|
|
}).create({
|
|
'body': self.body_html,
|
|
'partner_ids': [(4, self.partner_employee.id)],
|
|
'composition_mode': 'mass_mail',
|
|
})
|
|
with self.mock_mail_gateway(mail_unlink_sent=True):
|
|
composer._action_send_mail()
|
|
|
|
values = composer.get_mail_values(self.partner_employee.ids)
|
|
|
|
self.assertIn(
|
|
self.body_html,
|
|
values[self.partner_employee.id]['body_html'],
|
|
'We must preserve (mso) comments in email html'
|
|
)
|