# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo.addons.test_mail.tests.common import TestMailCommon, TestRecipients from odoo.tests import tagged from odoo.tests.common import users @tagged('mail_composer_mixin') class TestMailComposerMixin(TestMailCommon, TestRecipients): @classmethod def setUpClass(cls): super(TestMailComposerMixin, cls).setUpClass() # ensure employee can create partners, necessary for templates cls.user_employee.write({ 'groups_id': [(4, cls.env.ref('base.group_partner_manager').id)], }) cls.mail_template = cls.env['mail.template'].create({ 'body_html': '
EnglishBody for
EnglishBody for {source.name}
') @users("employee") def test_rendering_custom(self): """ Test rendering with custom strings (not coming from template) """ source = self.test_record.with_env(self.env) composer = self.env['mail.test.composer.mixin'].create({ 'description': 'Description for
SpecificBody from
SpecificBody from
SpecificBody from {self.env.user.name}
') description = composer._render_field('description', source.ids)[source.id] self.assertEqual(description, f'Description for {source.name}
') @users("employee") def test_rendering_lang(self): """ Test rendering with language involved """ template = self.mail_template.with_env(self.env) customer = self.partner_1.with_env(self.env) customer.lang = 'es_ES' source = self.test_record.with_env(self.env) composer = self.env['mail.test.composer.mixin'].create({ 'description': 'Description for
EnglishBody for {source.name}
') description = composer._render_field('description', source.ids)[source.id] self.assertEqual(description, f'Description for {source.name}
') # ask for dynamic language computation subject = composer._render_field('subject', source.ids, compute_lang=True)[source.id] self.assertEqual(subject, f'EnglishSubject for {source.name}', 'Fixme: translations are not done, as taking composer translations and not template one') body = composer._render_field('body', source.ids, compute_lang=True)[source.id] self.assertEqual(body, f'EnglishBody for {source.name}
', 'Fixme: translations are not done, as taking composer translations and not template one' ) description = composer._render_field('description', source.ids)[source.id] self.assertEqual(description, f'Description for {source.name}
')