Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
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)