Coverage for website/pushnotifications/tests/test_newsletters.py: 100.00%
20 statements
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1from django.test import TestCase
3from members.models import Member, Membership, Profile
4from newsletters.models import Newsletter
5from newsletters.services import send_newsletter
6from pushnotifications.models import Message
9class TestNewsletterNotifications(TestCase):
10 @classmethod
11 def setUpTestData(cls):
12 cls.member = Member.objects.create(username="user1")
13 Profile.objects.create(user=cls.member)
14 Membership.objects.create(
15 user=cls.member, type=Membership.MEMBER, since="2000-01-01"
16 )
18 cls.not_current_member = Member.objects.create(username="user2")
19 Profile.objects.create(user=cls.not_current_member)
21 cls.newsletter = Newsletter.objects.create(
22 title="testletter",
23 description="testdesc",
24 sent=False,
25 )
27 def test_send_newsletter_sends_notification(self):
28 """Sending a newsletter also sends a notification to all members."""
29 send_newsletter(self.newsletter)
31 self.assertTrue(
32 Message.objects.filter(
33 title=self.newsletter.title, sent__isnull=False
34 ).exists()
35 )
37 message = Message.objects.get(title=self.newsletter.title)
38 self.assertIn(self.member, message.users.all())
39 self.assertNotIn(self.not_current_member, message.users.all())