SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit f83e58d8 authored by George Katsikas's avatar George Katsikas :goat:
Browse files

add mailinglist tests

parent 85bbf66f
No related branches found
No related tags found
No related merge requests found
__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
import factory
from django.utils.text import slugify
from .models import *
class MailingListFactory(factory.django.DjangoModelFactory):
class Meta:
model = MailingList
name = factory.Faker("word")
slug = factory.LazyAttribute(lambda self: slugify(self.name))
is_opt_in = False
@factory.post_generation
def eligible_subscribers(self, create, extracted, **kwargs):
if not create:
return
if extracted:
for contributor in extracted:
self.eligible_subscribers.add(contributor)
@factory.post_generation
def subscribed(self, create, extracted, **kwargs):
if not create:
return
if extracted:
for contributor in extracted:
self.subscribed.add(contributor)
__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from django.test import TestCase
# Create your tests here.
__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from django.test import TestCase
from profiles.factories import ProfileEmailFactory
from scipost.factories import ContributorFactory
from ..factories import *
class TestMailingListFactory(TestCase):
def test_can_create_mailing_lists(self):
mailing_list = MailingListFactory()
self.assertIsNotNone(mailing_list)
def test_can_subscribe_contributor(self):
profile_email = ProfileEmailFactory(primary=True)
contributor = ContributorFactory.from_profile(profile_email.profile)
mailing_list = MailingListFactory()
mailing_list.add_eligible_subscriber(contributor)
self.assertEqual(mailing_list.eligible_subscribers.count(), 1)
self.assertEqual(mailing_list.subscribed.count(), 1)
self.assertEquals(mailing_list.email_list, [profile_email.email])
def test_can_unsubscribe_contributor(self):
profile_email = ProfileEmailFactory(primary=True)
contributor = ContributorFactory.from_profile(profile_email.profile)
mailing_list = MailingListFactory()
mailing_list.add_eligible_subscriber(contributor)
mailing_list.unsubscribe(contributor)
self.assertEqual(mailing_list.eligible_subscribers.count(), 1)
self.assertEqual(mailing_list.subscribed.count(), 0)
self.assertEquals(mailing_list.email_list, [])
def test_does_not_automatically_subscribe_if_opt_in(self):
profile_email = ProfileEmailFactory(primary=True)
contributor = ContributorFactory.from_profile(profile_email.profile)
mailing_list = MailingListFactory(is_opt_in=True)
mailing_list.add_eligible_subscriber(contributor)
self.assertEqual(mailing_list.eligible_subscribers.count(), 1)
self.assertEqual(mailing_list.subscribed.count(), 0)
self.assertEquals(mailing_list.email_list, [])
def test_does_not_include_nonprimary_emails(self):
profile_email = ProfileEmailFactory(primary=False)
profile_email_primary = ProfileEmailFactory(
primary=True, profile=profile_email.profile
)
contributor = ContributorFactory.from_profile(profile_email.profile)
mailing_list = MailingListFactory()
mailing_list.add_eligible_subscriber(contributor)
self.assertEquals(mailing_list.email_list, [profile_email_primary.email])
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment