def test_creates_pickup_disabled_notification_and_deletes_pickup_upcoming_notification( self): user1, user2 = UserFactory(), UserFactory() group = GroupFactory(members=[user1, user2]) place = PlaceFactory(group=group) in_one_hour = to_range(timezone.now() + relativedelta(hours=1)) pickup = PickupDateFactory(place=place, date=in_one_hour, collectors=[user1, user2]) Notification.objects.all().delete() create_pickup_upcoming_notifications.call_local() pickup.last_changed_by = user2 pickup.is_disabled = True pickup.save() pickup_upcoming_notifications = Notification.objects.filter( type=NotificationType.PICKUP_UPCOMING.value) self.assertEqual(pickup_upcoming_notifications.count(), 0) pickup_disabled_notifications = Notification.objects.filter( type=NotificationType.PICKUP_DISABLED.value) self.assertEqual(pickup_disabled_notifications.count(), 1) self.assertEqual(pickup_disabled_notifications[0].user, user1) context = pickup_disabled_notifications[0].context self.assertEqual(context['group'], group.id) self.assertEqual(context['pickup'], pickup.id) self.assertEqual(context['place'], place.id)
def test_create_pickup_upcoming_notifications(self): users = [UserFactory() for _ in range(3)] group = GroupFactory(members=users) place = PlaceFactory(group=group) in_one_hour = to_range(timezone.now() + relativedelta(hours=1)) pickup1 = PickupDateFactory(place=place, date=in_one_hour, collectors=users) in_two_hours = to_range(timezone.now() + relativedelta(hours=1)) PickupDateFactory(place=place, date=in_two_hours, collectors=users) Notification.objects.all().delete() create_pickup_upcoming_notifications.call_local() notifications = Notification.objects.filter( type=NotificationType.PICKUP_UPCOMING.value) self.assertEqual(notifications.count(), 6) self.assertEqual(set(n.user.id for n in notifications), set(user.id for user in users)) pickup1_user1_collector = PickupDateCollector.objects.get( user=users[0], pickupdate=pickup1) pickup1_user1_notification = next( n for n in notifications if n.context['pickup_collector'] == pickup1_user1_collector.id) self.assertEqual( pickup1_user1_notification.context, { 'group': group.id, 'place': place.id, 'pickup': pickup1.id, 'pickup_collector': pickup1_user1_collector.id, }) self.assertEqual(pickup1_user1_notification.expires_at, pickup1.date.start)
def test_creates_no_pickup_upcoming_notification_when_in_past(self): user = UserFactory() group = GroupFactory(members=[user]) place = PlaceFactory(group=group) one_hour_ago = to_range(timezone.now() - relativedelta(hours=1)) PickupDateFactory(place=place, date=one_hour_ago, collectors=[user]) Notification.objects.all().delete() create_pickup_upcoming_notifications.call_local() notifications = Notification.objects.filter( type=NotificationType.PICKUP_UPCOMING.value) self.assertEqual(notifications.count(), 0)
def test_deletes_pickup_upcoming_notification(self): user = UserFactory() group = GroupFactory(members=[user]) place = PlaceFactory(group=group) in_one_hour = to_range(timezone.now() + relativedelta(hours=1)) pickup = PickupDateFactory(place=place, date=in_one_hour, collectors=[user]) Notification.objects.all().delete() create_pickup_upcoming_notifications.call_local() pickup.remove_collector(user) notifications = Notification.objects.filter( type=NotificationType.PICKUP_UPCOMING.value) self.assertEqual(notifications.count(), 0)