1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/documents/tests/test_mail_gateway.py
2024-12-10 09:04:09 +07:00

78 lines
3.5 KiB
Python

# -*- coding: utf-8 -*-
from odoo import tools
from odoo.addons.mail.tests.common import MailCommon
from odoo.addons.test_mail.data.test_mail_data import MAIL_EML_ATTACHMENT
from odoo.tools import mute_logger
class TestMailGateway(MailCommon):
""" Test document creation on incoming mail.
Especially that the partner_id is correctly set on the created document.
"""
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.folder = cls.env['documents.folder'].create({
'name': 'folder',
})
cls.share_link = cls.env['documents.share'].create({
'folder_id': cls.folder.id,
'name': 'share_link_folder',
'email_drop': True,
'alias_name': 'shareFolder',
})
cls.alias = cls.env['mail.alias'].create({
'alias_name': 'inbox-test',
'alias_model_id': cls.env['ir.model']._get('documents.document').id,
'alias_parent_model_id': cls.env['ir.model']._get('documents.share').id,
'alias_parent_thread_id': cls.share_link.id,
'alias_defaults': f"{{'folder_id': {cls.folder.id}, 'create_share_id': {cls.share_link.id}}}",
'alias_contact': 'everyone',
})
cls.email_with_no_partner = tools.email_normalize('non-existing@test.com')
cls.pre_existing_partner = cls.env['res.partner'].find_or_create('existing@test.com')
cls.default_partner = cls.env['res.partner'].find_or_create('default@test.com')
cls.email_filenames = ['attachment', 'original_msg.eml']
def send_test_mail_with_attachment(self, email_from):
with self.mock_mail_gateway():
self.format_and_process(
MAIL_EML_ATTACHMENT,
email_from,
f'inbox-test@{self.alias_domain}',
subject='Test document creation on incoming mail',
target_model='documents.document',
)
documents = self.env['documents.document'].search([('name', 'in', self.email_filenames)])
self.assertEqual(len(documents), len(self.email_filenames))
return documents
def test_initial_values(self):
self.assertFalse(self.env['res.partner'].search([('email', '=', self.email_with_no_partner)]))
self.assertFalse(self.env['documents.document'].search([('name', 'in', self.email_filenames)]))
@mute_logger('odoo.addons.mail.models.mail_thread')
def test_set_contact_non_existing_partner(self):
for document in self.send_test_mail_with_attachment(self.email_with_no_partner):
self.assertFalse(document.partner_id)
@mute_logger('odoo.addons.mail.models.mail_thread')
def test_set_contact_existing_partner(self):
for document in self.send_test_mail_with_attachment(self.pre_existing_partner.email):
self.assertFalse(document.partner_id)
@mute_logger('odoo.addons.mail.models.mail_thread')
def test_set_contact_default_partner_non_existing_partner(self):
self.share_link.partner_id = self.default_partner
for document in self.send_test_mail_with_attachment(self.email_with_no_partner):
self.assertEqual(document.partner_id, self.default_partner)
@mute_logger('odoo.addons.mail.models.mail_thread')
def test_set_contact_default_partner_existing_partner(self):
self.share_link.partner_id = self.default_partner
for document in self.send_test_mail_with_attachment(self.pre_existing_partner.email):
self.assertEqual(document.partner_id, self.default_partner)