social/mail_drop_target/tests/test_mail_drop_target.py

74 lines
2.8 KiB
Python

from odoo.tests.common import TransactionCase
from odoo import exceptions, tools
from mock import patch
import base64
class TestMailDropTarget(TransactionCase):
def setUp(self):
super().setUp()
self.partner = self.env['res.partner'].create({
'name': 'TEST PARTNER'
})
self.partner.message_subscribe(partner_ids=self.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.needaction_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.needaction_partner_ids), 0)
with self.assertRaises(exceptions.Warning):
self.partner.message_process_msg(
self.partner._name, message, thread_id=self.partner.id)