from odoo.addons.website_slides.tests.common import SlidesCase
class TestSlidesMail(SlidesCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
common_vals = {
'auto_delete': True,
'body_html': '
Fist fight with
',
'email_from': '{{ object.user_id.email_formatted or user.email_formatted or "" }}',
'subject': 'Test {{ object.name }}'
}
cls.test_template_slides = cls.env['mail.template'].with_user(cls.user_manager).create({
**common_vals,
'model_id': cls.env['ir.model']._get_id('slide.slide'),
'name': 'Test Slide Template',
})
cls.test_template_channel = cls.env['mail.template'].with_user(cls.user_manager).create({
**common_vals,
'model_id': cls.env['ir.model']._get_id('slide.channel'),
'name': 'Test Channel Template',
})
cls.slide.write({
'partner_ids': [(6, 0, [cls.customer.id, cls.user_emp.partner_id.id, cls.user_portal.partner_id.id])],
})
cls.channel.write({
'partner_ids': [(6, 0, [cls.customer.id, cls.user_emp.partner_id.id, cls.user_portal.partner_id.id])],
})
def test_slide_channel_get_default_recipients(self):
channel = self.channel.with_user(self.user_manager)
default_recipients = channel._message_get_default_recipients()
self.assertDictEqual(default_recipients[channel.id], {'email_cc': False, 'email_to': False, 'partner_ids': []})
def test_slide_slide_get_default_recipients(self):
slide = self.slide.with_user(self.user_manager)
default_recipients = slide._message_get_default_recipients()
self.assertDictEqual(default_recipients[slide.id], {'email_cc': False, 'email_to': False, 'partner_ids': []})
def test_slide_channel_get_suggested_recipients(self):
channel = self.channel.with_user(self.user_manager)
suggested_recipient = channel._message_get_suggested_recipients()[0]
user_id = channel.user_id
self.assertDictEqual(
suggested_recipient,
{
'display_name': user_id.partner_id.display_name,
'lang': None, 'email': user_id.email, 'name': user_id.name,
'partner_id': user_id.partner_id.id, 'reason': 'Responsible'
}
)
def test_slide_slide_get_suggested_recipients(self):
slide = self.slide.with_user(self.user_manager)
suggested_recipient = slide._message_get_suggested_recipients()
self.assertFalse(suggested_recipient, "The user_id is already subscribed => no suggested_recipients")
def test_slide_and_channel_templates(self):
values = [self.channel.with_user(self.user_manager), self.slide.with_user(self.user_manager)]
templates = [
self.test_template_channel.with_user(self.user_manager),
self.test_template_slides.with_user(self.user_manager),
]
expected_values = [self.env['res.partner'], values[1].user_id.partner_id]
error_messages = [
'No auto subscribe => no notified partner_ids',
"auto subscribe => only slide's user_id is subscribed + notified",
]
for channel_or_slide, template, expected_value, error_message in zip(values, templates, expected_values, error_messages):
with self.subTest(channel_or_slide=channel_or_slide, template=template, expected_value=expected_value):
message = channel_or_slide.message_post_with_source(
template,
message_type='comment',
subtype_id=self.env.ref('mail.mt_comment').id,
)
self.assertEqual(message.notified_partner_ids, expected_value, error_message)