Skip to content

Commit

Permalink
[IMP] test_mass_mailing: add blacklist tests
Browse files Browse the repository at this point in the history
Purpose of this commit is to enforce blacklist use and base mechanisms. This
commit may break on runbot as fixes will come after having introduced tests.
It notably add tests for a8ce59c.

This commit is related to task ID 33224 (original blacklist implementation
done for v12) and its PR odoo#25966 as well as task ID 1889703 (tests and fixes)
and its PR odoo#27330. Done with collaboration of @dbeguin.
  • Loading branch information
tde-banana-odoo committed Oct 2, 2018
1 parent fca1654 commit 3922832
Show file tree
Hide file tree
Showing 2 changed files with 116 additions and 0 deletions.
2 changes: 2 additions & 0 deletions addons/test_mass_mailing/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.

from . import test_blacklist
114 changes: 114 additions & 0 deletions addons/test_mass_mailing/tests/test_blacklist.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.

from odoo.tests.common import users
from odoo.addons.test_mass_mailing.tests import common
from odoo.exceptions import AccessError


class TestBLAccessRights(common.MassMailingCase):

@users('emp')
def test_bl_create_employee(self):
with self.assertRaises(AccessError):
self.env['mail.blacklist'].create([{'email': '[email protected]'}])

@users('marketing')
def test_bl_create_marketing(self):
self.env['mail.blacklist'].create([{'email': '[email protected]'}])


class TestBLConsistency(common.MassMailingCase):
_base_list = ['[email protected]', '[email protected]']

def setUp(self):
super(TestBLConsistency, self).setUp()
self.bl_rec = self.env['mail.blacklist'].create([
{'email': 'Not A Stark <[email protected]>'},
])

self.bl_previous = self.env['mail.blacklist'].search([])

@users('marketing')
def test_bl_check_case_add(self):
""" Test emails case when adding through _add """
bl_sudo = self.env['mail.blacklist'].sudo()
existing = bl_sudo.create({
'email': '[email protected]',
'active': False,
})

added = self.env['mail.blacklist']._add('[email protected]')
self.assertEqual(existing, added)
self.assertTrue(existing.active)

@users('marketing')
def test_bl_check_case_remove(self):
""" Test emails case when deactivating through _remove """
bl_sudo = self.env['mail.blacklist'].sudo()
existing = bl_sudo.create({
'email': '[email protected]',
'active': True,
})

added = self.env['mail.blacklist']._remove('[email protected]')
self.assertEqual(existing, added)
self.assertFalse(existing.active)

@users('marketing')
def test_bl_create_duplicate(self):
""" Test emails are inserted only once if duplicated """
bl_sudo = self.env['mail.blacklist'].sudo()
self.env['mail.blacklist'].create([
{'email': self._base_list[0]},
{'email': self._base_list[1]},
{'email': 'Another Ned Stark <%s>' % self._base_list[1]},
])

new_bl = bl_sudo.search([('id', 'not in', self.bl_previous.ids)])

self.assertEqual(len(new_bl), 2)
self.assertEqual(
set(v.lower() for v in self._base_list),
set(v.lower() for v in new_bl.mapped('email'))
)

@users('marketing')
def test_bl_create_parsing(self):
""" Test email is correctly extracted from given entries """
bl_sudo = self.env['mail.blacklist'].sudo()
self.env['mail.blacklist'].create([
{'email': self._base_list[0]},
{'email': self._base_list[1]},
{'email': 'Not Ned Stark <[email protected]>'},
])

new_bl = bl_sudo.search([('id', 'not in', self.bl_previous.ids)])

self.assertEqual(len(new_bl), 3)
self.assertEqual(
set(v.lower() for v in self._base_list + ['[email protected]']),
set(v.lower() for v in new_bl.mapped('email'))
)

@users('marketing')
def test_bl_search_exact(self):
search_res = self.env['mail.blacklist'].search([('email', '=', '[email protected]')])
self.assertEqual(search_res, self.bl_rec)

@users('marketing')
def test_bl_search_parsing(self):
search_res = self.env['mail.blacklist'].search([('email', '=', 'Not A Stark <[email protected]>')])
self.assertEqual(search_res, self.bl_rec)

@users('marketing')
def test_bl_search_case(self):
search_res = self.env['mail.blacklist'].search([('email', '=', '[email protected]>')])
self.assertEqual(search_res, self.bl_rec)

@users('marketing')
def test_bl_search_partial(self):
search_res = self.env['mail.blacklist'].search([('email', 'ilike', 'John')])
self.assertEqual(search_res, self.bl_rec)
search_res = self.env['mail.blacklist'].search([('email', 'ilike', '[email protected]>')])
self.assertEqual(search_res, self.bl_rec)

0 comments on commit 3922832

Please sign in to comment.