diff options
| author | Thibault Delavallée <tde@openerp.com> | 2013-08-27 15:30:58 +0200 |
|---|---|---|
| committer | Thibault Delavallée <tde@openerp.com> | 2013-08-27 15:30:58 +0200 |
| commit | b35a44f66d947b03542b8eb3899fcd3adcf476ef (patch) | |
| tree | a6455ce29d91415d892ee04ad67594795b4dab52 /addons/mail/tests/common.py | |
| parent | 3a67d7dc992963c27a993010ab355cc3b6d88a78 (diff) | |
[IMP] mail_mail, mail_message: various improvements to try to improve message creation time
Replaced some read by browse
Moved get_reply_to from mail_mail to mail_message
Hint: specifying email_from, reply_to help to enhance computation time
[REF] mail: cleaned some tests, renamed a file, moved mail_group tests into a dedicated file
bzr revid: tde@openerp.com-20130827133058-ko0g0ib0f0jihmdk
Diffstat (limited to 'addons/mail/tests/common.py')
| -rw-r--r-- | addons/mail/tests/common.py | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/addons/mail/tests/common.py b/addons/mail/tests/common.py new file mode 100644 index 00000000000..68a329e043a --- /dev/null +++ b/addons/mail/tests/common.py @@ -0,0 +1,134 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Business Applications +# Copyright (c) 2012-TODAY OpenERP S.A. <http://openerp.com> +# +# 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.tests import common + + +class TestMail(common.TransactionCase): + + def _mock_smtp_gateway(self, *args, **kwargs): + return args[2]['Message-Id'] + + def _init_mock_build_email(self): + self._build_email_args_list = [] + self._build_email_kwargs_list = [] + + def _mock_build_email(self, *args, **kwargs): + """ Mock build_email to be able to test its values. Store them into + some internal variable for latter processing. """ + self._build_email_args_list.append(args) + self._build_email_kwargs_list.append(kwargs) + return self._build_email(*args, **kwargs) + + def setUp(self): + super(TestMail, self).setUp() + cr, uid = self.cr, self.uid + + # Install mock SMTP gateway + self._init_mock_build_email() + self._build_email = self.registry('ir.mail_server').build_email + self.registry('ir.mail_server').build_email = self._mock_build_email + self._send_email = self.registry('ir.mail_server').send_email + self.registry('ir.mail_server').send_email = self._mock_smtp_gateway + + # Usefull models + self.ir_model = self.registry('ir.model') + self.ir_model_data = self.registry('ir.model.data') + self.ir_attachment = self.registry('ir.attachment') + self.mail_alias = self.registry('mail.alias') + self.mail_thread = self.registry('mail.thread') + self.mail_group = self.registry('mail.group') + self.mail_mail = self.registry('mail.mail') + self.mail_message = self.registry('mail.message') + self.mail_notification = self.registry('mail.notification') + self.mail_followers = self.registry('mail.followers') + self.mail_message_subtype = self.registry('mail.message.subtype') + self.res_users = self.registry('res.users') + self.res_partner = self.registry('res.partner') + + # Find Employee group + group_employee_ref = self.registry('ir.model.data').get_object_reference(cr, uid, 'base', 'group_user') + self.group_employee_id = group_employee_ref and group_employee_ref[1] or False + + # Partner Data + + # User Data: employee, noone + self.user_employee_id = self.res_users.create(cr, uid, { + 'name': 'Ernest Employee', + 'login': 'ernest', + 'alias_name': 'ernest', + 'email': 'e.e@example.com', + 'signature': '--\nErnest', + 'notification_email_send': 'comment', + 'groups_id': [(6, 0, [self.group_employee_id])] + }, {'no_reset_password': True}) + self.user_noone_id = self.res_users.create(cr, uid, { + 'name': 'Noemie NoOne', + 'login': 'noemie', + 'alias_name': 'noemie', + 'email': 'n.n@example.com', + 'signature': '--\nNoemie', + 'notification_email_send': 'comment', + 'groups_id': [(6, 0, [])] + }, {'no_reset_password': True}) + + # Test users to use through the various tests + self.res_users.write(cr, uid, uid, {'name': 'Administrator'}) + self.user_raoul_id = self.res_users.create(cr, uid, { + 'name': 'Raoul Grosbedon', + 'signature': 'SignRaoul', + 'email': 'raoul@raoul.fr', + 'login': 'raoul', + 'alias_name': 'raoul', + 'groups_id': [(6, 0, [self.group_employee_id])] + }) + self.user_bert_id = self.res_users.create(cr, uid, { + 'name': 'Bert Tartignole', + 'signature': 'SignBert', + 'email': 'bert@bert.fr', + 'login': 'bert', + 'alias_name': 'bert', + 'groups_id': [(6, 0, [])] + }) + self.user_raoul = self.res_users.browse(cr, uid, self.user_raoul_id) + self.user_bert = self.res_users.browse(cr, uid, self.user_bert_id) + self.user_admin = self.res_users.browse(cr, uid, uid) + self.partner_admin_id = self.user_admin.partner_id.id + self.partner_raoul_id = self.user_raoul.partner_id.id + self.partner_bert_id = self.user_bert.partner_id.id + + # Test 'pigs' group to use through the various tests + self.group_pigs_id = self.mail_group.create( + cr, uid, + {'name': 'Pigs', 'description': 'Fans of Pigs, unite !', 'alias_name': 'group+pigs'}, + {'mail_create_nolog': True} + ) + self.group_pigs = self.mail_group.browse(cr, uid, self.group_pigs_id) + # Test mail.group: public to provide access to everyone + self.group_jobs_id = self.mail_group.create(cr, uid, {'name': 'Jobs', 'public': 'public'}) + # Test mail.group: private to restrict access + self.group_priv_id = self.mail_group.create(cr, uid, {'name': 'Private', 'public': 'private'}) + + def tearDown(self): + # Remove mocks + self.registry('ir.mail_server').build_email = self._build_email + self.registry('ir.mail_server').send_email = self._send_email + super(TestMail, self).tearDown() |
