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

1from django.test import TestCase 

2 

3from members.models import Member, Membership, Profile 

4from photos.models import Album 

5from pushnotifications.models import NewAlbumMessage 

6 

7 

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 ) 

16 

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

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

19 

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 ) 

29 

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 ) 

35 

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 ) 

44 

45 self.assertFalse(hasattr(album, "new_album_notification")) 

46 self.assertFalse(NewAlbumMessage.objects.filter(album=album).exists()) 

47 

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 ) 

57 

58 self.assertFalse(hasattr(album, "new_album_notification")) 

59 self.assertFalse(NewAlbumMessage.objects.filter(album=album).exists()) 

60 

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 ) 

69 

70 self.assertIsNotNone(album.new_album_notification) 

71 

72 album.hidden = True 

73 album.save() 

74 

75 self.assertFalse(hasattr(album, "new_album_notification")) 

76 self.assertFalse(NewAlbumMessage.objects.filter(album=album).exists()) 

77 

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 ) 

86 

87 self.assertFalse(hasattr(album, "new_album_notification")) 

88 

89 album.hidden = False 

90 album.save() 

91 

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 )