Coverage for website/pushnotifications/tests/test_photos.py: 100.00%
40 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 photos.models import Album
5from pushnotifications.models import NewAlbumMessage
8class TestNewAlbumNotifications(TestCase):
9 @classmethod
10 def setUpTestData(cls):
11 cls.member = Member.objects.create(username="user1")
12 Profile.objects.create(user=cls.member)
13 Membership.objects.create(
14 user=cls.member, type=Membership.MEMBER, since="2000-01-01"
15 )
17 cls.not_current_member = Member.objects.create(username="user2")
18 Profile.objects.create(user=cls.not_current_member)
20 def test_new_published_album_schedules_notification(self):
21 """Creating a new album schedules a notification to all members."""
22 album = Album.objects.create(
23 slug="test-album",
24 title="test album",
25 date="2000-01-01",
26 hidden=False,
27 is_processing=False,
28 )
30 self.assertIsNotNone(album.new_album_notification)
31 self.assertIn(self.member, album.new_album_notification.users.all())
32 self.assertNotIn(
33 self.not_current_member, album.new_album_notification.users.all()
34 )
36 def test_new_hidden_album_does_not_schedule_notification(self):
37 """Creating a new hidden album does not schedule a notification."""
38 album = Album.objects.create(
39 slug="test-album",
40 title="test album",
41 date="2000-01-01",
42 hidden=True,
43 )
45 self.assertFalse(hasattr(album, "new_album_notification"))
46 self.assertFalse(NewAlbumMessage.objects.filter(album=album).exists())
48 def test_new_uploading_album_does_not_schedule_notification(self):
49 """Creating a new hidden album does not schedule a notification."""
50 album = Album.objects.create(
51 slug="test-album",
52 title="test album",
53 date="2000-01-01",
54 hidden=False,
55 is_processing=True,
56 )
58 self.assertFalse(hasattr(album, "new_album_notification"))
59 self.assertFalse(NewAlbumMessage.objects.filter(album=album).exists())
61 def test_hide_album_deletes_notification(self):
62 """Hiding an album deletes the scheduled notification."""
63 album = Album.objects.create(
64 slug="test-album",
65 title="test album",
66 date="2000-01-01",
67 hidden=False,
68 )
70 self.assertIsNotNone(album.new_album_notification)
72 album.hidden = True
73 album.save()
75 self.assertFalse(hasattr(album, "new_album_notification"))
76 self.assertFalse(NewAlbumMessage.objects.filter(album=album).exists())
78 def test_unhide_album_schedules_notification(self):
79 """Unhiding an album schedules a notification to all members."""
80 album = Album.objects.create(
81 slug="test-album",
82 title="test album",
83 date="2000-01-01",
84 hidden=True,
85 )
87 self.assertFalse(hasattr(album, "new_album_notification"))
89 album.hidden = False
90 album.save()
92 self.assertIsNotNone(album.new_album_notification)
93 self.assertIn(self.member, album.new_album_notification.users.all())
94 self.assertNotIn(
95 self.not_current_member, album.new_album_notification.users.all()
96 )