You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
4.4 KiB
103 lines
4.4 KiB
# -*- coding: utf-8 -*-
|
|
##############################################################################
|
|
#
|
|
# OpenERP, Open Source Management Solution
|
|
# This module copyright (C) 2015 Therp BV (<http://therp.nl>).
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as
|
|
# published by the Free Software Foundation, either version 3 of the
|
|
# License, or (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
##############################################################################
|
|
from openerp import models
|
|
from openerp.tests.common import TransactionCase
|
|
from openerp.addons.fetchmail_attach_from_folder.match_algorithm import (
|
|
email_exact, email_domain, openerp_standard)
|
|
|
|
|
|
class TestMatchAlgorithms(TransactionCase):
|
|
def do_matching(self, match_algorithm, expected_xmlid, conf, mail_message,
|
|
mail_message_org=None):
|
|
matcher = match_algorithm()
|
|
matches = matcher.search_matches(
|
|
self.env.cr, self.env.uid, conf, mail_message, mail_message_org)
|
|
self.assertEqual(len(matches), 1)
|
|
self.assertEqual(
|
|
matches[0], self.env.ref(expected_xmlid).id)
|
|
matcher.handle_match(
|
|
self.env.cr, self.env.uid, None, matches[0], conf, mail_message,
|
|
mail_message_org, None)
|
|
|
|
def test_email_exact(self):
|
|
mail_message = {
|
|
'subject': 'Testsubject',
|
|
'to': 'demo@yourcompany.example.com',
|
|
'from': 'someone@else.com',
|
|
}
|
|
conf = self.env['fetchmail.server.folder'].browse([models.NewId()])
|
|
conf.model_id = self.env.ref('base.model_res_partner').id
|
|
conf.model_field = 'email'
|
|
conf.match_algorithm = 'email_exact'
|
|
conf.mail_field = 'to,from'
|
|
conf.server_id = self.env['fetchmail.server'].browse([models.NewId()])
|
|
self.do_matching(
|
|
email_exact.email_exact, 'base.user_demo_res_partner',
|
|
conf, mail_message)
|
|
self.assertEqual(
|
|
self.env.ref('base.user_demo_res_partner').message_ids.subject,
|
|
mail_message['subject'])
|
|
|
|
def test_email_domain(self):
|
|
mail_message = {
|
|
'subject': 'Testsubject',
|
|
'to': 'test@seagate.com',
|
|
'from': 'someone@else.com',
|
|
}
|
|
conf = self.env['fetchmail.server.folder'].browse([models.NewId()])
|
|
conf.model_id = self.env.ref('base.model_res_partner').id
|
|
conf.model_field = 'email'
|
|
conf.match_algorithm = 'email_domain'
|
|
conf.mail_field = 'to,from'
|
|
conf.use_first_match = True
|
|
conf.server_id = self.env['fetchmail.server'].browse([models.NewId()])
|
|
self.do_matching(
|
|
email_domain.email_domain, 'base.res_partner_address_31',
|
|
conf, mail_message)
|
|
self.assertEqual(
|
|
self.env.ref('base.res_partner_address_31').message_ids.subject,
|
|
mail_message['subject'])
|
|
|
|
def test_openerp_standard(self):
|
|
mail_message_org = (
|
|
"To: demo@yourcompany.example.com\n"
|
|
"From: someone@else.com\n"
|
|
"Subject: testsubject\n"
|
|
"Message-Id: 42\n"
|
|
"Hello world"
|
|
)
|
|
conf = self.env['fetchmail.server.folder'].browse([models.NewId()])
|
|
conf.model_id = self.env.ref('base.model_res_partner').id
|
|
conf.model_field = 'email'
|
|
conf.match_algorithm = 'openerp_standard'
|
|
conf.mail_field = 'to,from'
|
|
conf.server_id = self.env['fetchmail.server'].browse([models.NewId()])
|
|
matcher = openerp_standard.openerp_standard()
|
|
matches = matcher.search_matches(
|
|
self.env.cr, self.env.uid, conf, None, mail_message_org)
|
|
self.assertEqual(len(matches), 1)
|
|
matcher.handle_match(
|
|
self.env.cr, self.env.uid, None, matches[0], conf, None,
|
|
mail_message_org, None, None)
|
|
self.assertIn(
|
|
'Hello world',
|
|
self.env['mail.message']
|
|
.search([('subject', '=', 'testsubject')]).body)
|