mirror of https://github.com/zulip/zulip.git
Add a test for unsubscribing from digest emails.
(imported from commit 145c25ae99cf66b9a447b2e3a44a3b7344dc9f59)
This commit is contained in:
parent
e15cc972ec
commit
11d5f8bbc5
|
@ -29,6 +29,7 @@ from zerver.lib.cache import bounce_key_prefix_for_testing
|
||||||
from zerver.lib.rate_limiter import clear_user_history
|
from zerver.lib.rate_limiter import clear_user_history
|
||||||
from zerver.lib.alert_words import alert_words_in_realm, user_alert_words, \
|
from zerver.lib.alert_words import alert_words_in_realm, user_alert_words, \
|
||||||
add_user_alert_words, remove_user_alert_words
|
add_user_alert_words, remove_user_alert_words
|
||||||
|
from zerver.lib.digest import send_digest_email
|
||||||
from zerver.forms import not_mit_mailing_list
|
from zerver.forms import not_mit_mailing_list
|
||||||
|
|
||||||
from zerver.worker import queue_processors
|
from zerver.worker import queue_processors
|
||||||
|
@ -4755,6 +4756,35 @@ class EmailUnsubscribeTests(AuthedTestCase):
|
||||||
self.assertEqual(0, len(ScheduledJob.objects.filter(
|
self.assertEqual(0, len(ScheduledJob.objects.filter(
|
||||||
type=ScheduledJob.EMAIL, filter_string__iexact=email)))
|
type=ScheduledJob.EMAIL, filter_string__iexact=email)))
|
||||||
|
|
||||||
|
def test_digest_unsubscribe(self):
|
||||||
|
"""
|
||||||
|
We provide one-click unsubscribe links in digest e-mails that you can
|
||||||
|
click even when logged out to stop receiving them.
|
||||||
|
|
||||||
|
Unsubscribing from these emails also dequeues any digest email jobs that
|
||||||
|
have been queued.
|
||||||
|
"""
|
||||||
|
email = "hamlet@zulip.com"
|
||||||
|
user_profile = get_user_profile_by_email("hamlet@zulip.com")
|
||||||
|
self.assertTrue(user_profile.enable_digest_emails)
|
||||||
|
|
||||||
|
# Enqueue a fake digest email.
|
||||||
|
send_digest_email(user_profile, "", "")
|
||||||
|
self.assertEqual(1, len(ScheduledJob.objects.filter(
|
||||||
|
type=ScheduledJob.EMAIL, filter_string__iexact=email)))
|
||||||
|
|
||||||
|
# Simulate unsubscribing from digest e-mails.
|
||||||
|
unsubscribe_link = one_click_unsubscribe_link(user_profile, "digest")
|
||||||
|
result = self.client.get(urlparse(unsubscribe_link).path)
|
||||||
|
|
||||||
|
# The setting is toggled off, and scheduled jobs have been removed.
|
||||||
|
self.assertEqual(result.status_code, 200)
|
||||||
|
# Circumvent user_profile caching.
|
||||||
|
user_profile = UserProfile.objects.get(email="hamlet@zulip.com")
|
||||||
|
self.assertFalse(user_profile.enable_digest_emails)
|
||||||
|
self.assertEqual(0, len(ScheduledJob.objects.filter(
|
||||||
|
type=ScheduledJob.EMAIL, filter_string__iexact=email)))
|
||||||
|
|
||||||
class Runner(DjangoTestSuiteRunner):
|
class Runner(DjangoTestSuiteRunner):
|
||||||
option_list = ()
|
option_list = ()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue