social/mail_drop_target/tests/test_mail_drop_target.py

78 lines
2.9 KiB
Python

import base64
from mock import patch
from odoo import exceptions, tools
from odoo.tests.common import SavepointCase
class TestMailDropTarget(SavepointCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
cls.partner = cls.env["res.partner"].create({"name": "TEST PARTNER"})
cls.partner.message_subscribe(partner_ids=cls.partner.ids)
def test_eml(self):
message = tools.file_open(
"sample.eml", subdir="addons/mail_drop_target/tests"
).read()
comments = len(self.partner.message_ids)
self.partner.message_process(
self.partner._name, message, thread_id=self.partner.id
)
self.partner.refresh()
self.assertEqual(comments + 1, len(self.partner.message_ids))
with self.assertRaises(exceptions.Warning):
self.partner.message_drop(
self.partner._name, message, thread_id=self.partner.id
)
def test_msg(self):
message = base64.b64encode(
tools.file_open(
"sample.msg", mode="rb", subdir="addons/mail_drop_target/tests"
).read()
)
comments = len(self.partner.message_ids)
self.partner.message_process_msg(
self.partner._name, message, thread_id=self.partner.id
)
self.partner.refresh()
self.assertEqual(comments + 1, len(self.partner.message_ids))
msg = self.partner.message_ids.filtered(lambda m: m.subject == "Test")
self.assertIsNotNone(msg.notified_partner_ids)
with self.assertRaises(exceptions.Warning):
self.partner.message_process_msg(
self.partner._name, message, thread_id=self.partner.id
)
def test_no_msgextract(self):
with self.assertRaises(exceptions.UserError), patch(
"odoo.addons.mail_drop_target.models.mail_thread.Message", new=False
):
self.test_msg()
def test_msg_no_notification(self):
message = base64.b64encode(
tools.file_open(
"sample.msg", mode="rb", subdir="addons/mail_drop_target/tests"
).read()
)
settings = self.env["res.config.settings"].create({})
settings.disable_notify_mail_drop_target = True
settings.execute()
comments = len(self.partner.message_ids)
self.partner.message_process_msg(
self.partner._name, message, thread_id=self.partner.id
)
self.partner.refresh()
self.assertEqual(comments + 1, len(self.partner.message_ids))
msg = self.partner.message_ids.filtered(lambda m: m.subject == "Test")
self.assertEqual(len(msg.notified_partner_ids), 0)
with self.assertRaises(exceptions.Warning):
self.partner.message_process_msg(
self.partner._name, message, thread_id=self.partner.id
)