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

1from django.test import TestCase 

2 

3from members.models import Member, Membership, Profile 

4from newsletters.models import Newsletter 

5from newsletters.services import send_newsletter 

6from pushnotifications.models import Message 

7 

8 

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 ) 

17 

18 cls.not_current_member = Member.objects.create(username="user2") 

19 Profile.objects.create(user=cls.not_current_member) 

20 

21 cls.newsletter = Newsletter.objects.create( 

22 title="testletter", 

23 description="testdesc", 

24 sent=False, 

25 ) 

26 

27 def test_send_newsletter_sends_notification(self): 

28 """Sending a newsletter also sends a notification to all members.""" 

29 send_newsletter(self.newsletter) 

30 

31 self.assertTrue( 

32 Message.objects.filter( 

33 title=self.newsletter.title, sent__isnull=False 

34 ).exists() 

35 ) 

36 

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())