diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/website_mail_channel/tests | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/website_mail_channel/tests')
| -rw-r--r-- | addons/website_mail_channel/tests/__init__.py | 2 | ||||
| -rw-r--r-- | addons/website_mail_channel/tests/test_unsubscribe.py | 60 |
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())) |
