diff --git a/addons/mail/tests/test_mail.py b/addons/mail/tests/test_mail.py index bf9520f0e68..1fab5dd1732 100644 --- a/addons/mail/tests/test_mail.py +++ b/addons/mail/tests/test_mail.py @@ -84,7 +84,7 @@ Sylvie """ -class test_mail(common.TransactionCase): +class TestMailMockups(common.TransactionCase): def _mock_smtp_gateway(self, *args, **kwargs): return True @@ -98,6 +98,24 @@ class test_mail(common.TransactionCase): self._build_email_kwargs_list.append(kwargs) return self._build_email(*args, **kwargs) + def setUp(self): + super(TestMailMockups, self).setUp() + # 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 + + 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(TestMailMockups, self).tearDown() + + +class test_mail(TestMailMockups): + def _mock_send_get_mail_body(self, *args, **kwargs): # def _send_get_mail_body(self, cr, uid, mail, partner=None, context=None) body = tools.append_content_to_html(args[2].body_html, kwargs.get('partner').name if kwargs.get('partner') else 'No specific partner') @@ -116,12 +134,6 @@ class test_mail(common.TransactionCase): self.res_users = self.registry('res.users') self.res_partner = self.registry('res.partner') - # 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 # Mock send_get_mail_body to test its functionality without other addons override self._send_get_mail_body = self.registry('mail.mail').send_get_mail_body self.registry('mail.mail').send_get_mail_body = self._mock_send_get_mail_body @@ -136,8 +148,6 @@ class test_mail(common.TransactionCase): 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 self.registry('mail.mail').send_get_mail_body = self._send_get_mail_body super(test_mail, self).tearDown() diff --git a/addons/portal/tests/test_portal.py b/addons/portal/tests/test_portal.py index b98614de5e9..5f2875711df 100644 --- a/addons/portal/tests/test_portal.py +++ b/addons/portal/tests/test_portal.py @@ -19,22 +19,12 @@ # ############################################################################## -from openerp.tests import common +from openerp.addons.mail.tests import test_mail +# from openerp.tests import common +from openerp.tools import append_content_to_html -class test_portal(common.TransactionCase): - - def _mock_smtp_gateway(self, *args, **kwargs): - return True - - def _mock_build_email(self, *args, **kwargs): - self._build_email_args_list.append(args) - self._build_email_kwargs_list.append(kwargs) - return self._build_email(*args, **kwargs) - - def _init_mock_build_email(self): - self._build_email_args_list = [] - self._build_email_kwargs_list = [] +class test_portal(test_mail.TestMailMockups): def setUp(self): super(test_portal, self).setUp() @@ -44,23 +34,42 @@ class test_portal(common.TransactionCase): self.res_users = self.registry('res.users') self.res_partner = self.registry('res.partner') - # 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 - # create a 'pigs' group that will be used through the various tests self.group_pigs_id = self.mail_group.create(self.cr, self.uid, {'name': 'Pigs', 'description': 'Fans of Pigs, unite !'}) - 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(test_portal, self).tearDown() - def test_00_mail_invite(self): cr, uid = self.cr, self.uid - print 'cacaprout' + user_admin = self.res_users.browse(cr, uid, uid) + self.mail_invite = self.registry('mail.wizard.invite') + base_url = self.registry('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='') + portal_ref = self.registry('ir.model.data').get_object_reference(cr, uid, 'portal', 'portal') + portal_id = portal_ref and portal_ref[1] or False + + # 0 - Admin + p_a_id = user_admin.partner_id.id + # 1 - Bert Tartopoils, with email, should receive emails for comments and emails + p_b_id = self.res_partner.create(cr, uid, {'name': 'Bert Tartopoils', 'email': 'b@b'}) + + # ---------------------------------------- + # CASE1: invite Bert + # ---------------------------------------- + + _sent_email_subject = 'Invitation to follow Pigs' + _sent_email_body = append_content_to_html('
You have been invited to follow Pigs.
', + base_url + '/login?action=signin&partner_id=%s&group=%s&key=%s' % (p_b_id, portal_id, 1234)) + + # Do: create a mail_wizard_invite, validate it + self._init_mock_build_email() + mail_invite_id = self.mail_invite.create(cr, uid, {'partner_ids': [(4, p_b_id)]}, {'default_res_model': 'mail.group', 'default_res_id': self.group_pigs_id}) + self.mail_invite.add_followers(cr, uid, [mail_invite_id]) + group_pigs = self.mail_group.browse(cr, uid, self.group_pigs_id) + + # Test: Pigs followers should contain Admin and Bert + follower_ids = [follower.id for follower in group_pigs.message_follower_ids] + self.assertEqual(set(follower_ids), set([p_a_id, p_b_id]), 'Pigs followers after invite is incorrect') + # Test: sent email subject, body + self.assertEqual(len(self._build_email_kwargs_list), 1, 'sent email number incorrect, should be only for Bert') + for sent_email in self._build_email_kwargs_list: + self.assertEqual(sent_email.get('subject'), _sent_email_subject, 'sent email subject incorrect') + self.assertEqual(sent_email.get('body'), _sent_email_body, 'sent email body incorrect')