From 0c37eb272fba1063444f0ec91db1fe543c1beebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 1 Oct 2018 16:24:33 +0200 Subject: [PATCH] [IMP] test_mass_mailing: add blacklist mixin tests Purpose of this commit is to add some tests linked to the blacklist mixin itself, notably the computed fields and its search method. This commit is related to task ID 33224 (original blacklist implementation done for v12) and its PR #25966 as well as task ID 1889703 (tests and fixes) and its PR #27330. Done with collaboration of @dbeguin. --- addons/test_mass_mailing/tests/__init__.py | 1 + .../tests/test_blacklist_mixin.py | 81 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 addons/test_mass_mailing/tests/test_blacklist_mixin.py diff --git a/addons/test_mass_mailing/tests/__init__.py b/addons/test_mass_mailing/tests/__init__.py index 9994621796b..971e2a02ae1 100644 --- a/addons/test_mass_mailing/tests/__init__.py +++ b/addons/test_mass_mailing/tests/__init__.py @@ -2,3 +2,4 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import test_blacklist +from . import test_blacklist_mixin diff --git a/addons/test_mass_mailing/tests/test_blacklist_mixin.py b/addons/test_mass_mailing/tests/test_blacklist_mixin.py new file mode 100644 index 00000000000..0760b90f5e2 --- /dev/null +++ b/addons/test_mass_mailing/tests/test_blacklist_mixin.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from unittest.mock import patch + +from odoo.tests.common import users +from odoo.addons.test_mass_mailing.tests import common +from odoo.addons.test_mass_mailing.models.mass_mail_test import MassMailTestBlacklist +from odoo.exceptions import AccessError, UserError + + +class TestBLMixin(common.MassMailingCase): + + @classmethod + def setUpClass(cls): + super(TestBLMixin, cls).setUpClass() + + cls.env['mail.blacklist'].create([{ + 'email': 'Arya.Stark@example.com', + 'active': True, + }, { + 'email': 'Sansa.Stark@example.com', + 'active': False, + }]) + + @users('emp') + def test_bl_mixin_primary_field_consistency(self): + MassMailTestBlacklist._primary_email = ['not_a_field'] + with self.assertRaises(UserError): + self.env['mass.mail.test.bl'].search([('is_blacklisted', '=', False)]) + + MassMailTestBlacklist._primary_email = 'not_a_list' + with self.assertRaises(UserError): + self.env['mass.mail.test.bl'].search([('is_blacklisted', '=', False)]) + + MassMailTestBlacklist._primary_email = 'email_from' + with self.assertRaises(UserError): + self.env['mass.mail.test.bl'].search([('is_blacklisted', '=', False)]) + + MassMailTestBlacklist._primary_email = ['email_from', 'name'] + with self.assertRaises(UserError): + self.env['mass.mail.test.bl'].search([('is_blacklisted', '=', False)]) + + MassMailTestBlacklist._primary_email = ['email_from'] + self.env['mass.mail.test.bl'].search([('is_blacklisted', '=', False)]) + + @users('emp') + def test_bl_mixin_is_blacklisted(self): + """ Test is_blacklisted field computation """ + record = self.env['mass.mail.test.bl'].create({'email_from': 'arya.stark@example.com'}) + self.assertTrue(record.is_blacklisted) + + record = self.env['mass.mail.test.bl'].create({'email_from': 'not.arya.stark@example.com'}) + self.assertFalse(record.is_blacklisted) + + @users('emp') + def test_bl_mixin_search_blacklisted(self): + """ Test is_blacklisted field search implementation """ + record1 = self.env['mass.mail.test.bl'].create({'email_from': 'arya.stark@example.com'}) + record2 = self.env['mass.mail.test.bl'].create({'email_from': 'not.arya.stark@example.com'}) + + search_res = self.env['mass.mail.test.bl'].search([('is_blacklisted', '=', False)]) + self.assertEqual(search_res, record2) + + search_res = self.env['mass.mail.test.bl'].search([('is_blacklisted', '!=', True)]) + self.assertEqual(search_res, record2) + + search_res = self.env['mass.mail.test.bl'].search([('is_blacklisted', '=', True)]) + self.assertEqual(search_res, record1) + + search_res = self.env['mass.mail.test.bl'].search([('is_blacklisted', '!=', False)]) + self.assertEqual(search_res, record1) + + @users('emp') + def test_bl_mixin_search_blacklisted_format(self): + """ Test is_blacklisted field search using email parsing """ + record1 = self.env['mass.mail.test.bl'].create({'email_from': 'Arya Stark '}) + self.assertTrue(record1.is_blacklisted) + + search_res = self.env['mass.mail.test.bl'].search([('is_blacklisted', '=', True)]) + self.assertEqual(search_res, record1)