summaryrefslogtreecommitdiff
path: root/addons/website_mail_channel/tests
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/website_mail_channel/tests
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/website_mail_channel/tests')
-rw-r--r--addons/website_mail_channel/tests/__init__.py2
-rw-r--r--addons/website_mail_channel/tests/test_unsubscribe.py60
2 files changed, 62 insertions, 0 deletions
diff --git a/addons/website_mail_channel/tests/__init__.py b/addons/website_mail_channel/tests/__init__.py
new file mode 100644
index 00000000..2e3364d7
--- /dev/null
+++ b/addons/website_mail_channel/tests/__init__.py
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+from . import test_unsubscribe
diff --git a/addons/website_mail_channel/tests/test_unsubscribe.py b/addons/website_mail_channel/tests/test_unsubscribe.py
new file mode 100644
index 00000000..8da7bb5b
--- /dev/null
+++ b/addons/website_mail_channel/tests/test_unsubscribe.py
@@ -0,0 +1,60 @@
+# -*- coding: utf-8 -*-
+
+from odoo.tests import common, tagged
+from odoo.tools.misc import mute_logger, ustr
+
+
+@tagged('-at_install', 'post_install')
+class TestConfirmUnsubscribe(common.HttpCase):
+ def setUp(self):
+ super(TestConfirmUnsubscribe, self).setUp()
+ self.partner = self.env['res.partner'].create({
+ 'name': 'Bob',
+ 'email': 'bob@bob.bob'
+ })
+ self.mailing_list = self.env['mail.channel'].create({
+ 'name': 'Test Mailing List',
+ 'public': 'public',
+ })
+ self.token = self.mailing_list._generate_action_token(self.partner.id, action='unsubscribe')
+
+ def test_not_subscribed(self):
+ """Test warning works"""
+ self._unsubscribe_check("The address %s is already unsubscribed" % self.partner.email)
+
+ @mute_logger('odoo.addons.website.models.ir_ui_view')
+ def test_not_subscribed_no_template(self):
+ """ Test warning works on db without template (code update w/o module update) """
+ self.env.ref('website_mail_channel.not_subscribed').unlink()
+ self.assertEqual(
+ self.env['ir.model.data'].search_count([
+ ('module', '=', 'website_mail_channel'),
+ ('name', '=', 'not_subscribed'),
+ ]), 0, 'XID for template should have been deleted')
+
+ self._unsubscribe_check("The address %s is already unsubscribed or was never subscribed to any mailing list" % self.partner.email)
+
+ def test_wrong_token(self):
+ self.mailing_list.sudo().write({
+ 'channel_partner_ids': [(4, self.partner.id, False)]
+ })
+ self.token = 'XXX'
+
+ self._unsubscribe_check("Invalid or expired confirmation link.")
+
+ def test_successful_unsubscribe(self):
+ self.mailing_list.sudo().write({
+ 'channel_partner_ids': [(4, self.partner.id, False)]
+ })
+
+ self._unsubscribe_check("You have been correctly unsubscribed")
+
+ def _unsubscribe_check(self, text):
+ url = "/groups/unsubscribe/{}/{}/{}".format(
+ self.mailing_list.id, self.partner.id,
+ self.token
+ )
+ r = self.url_open(url)
+ body = ustr(r.content)
+ # normalize space to make matching simpler
+ self.assertIn(text, u' '.join(body.split()))