Example #1
0
    def test_create_pickup_upcoming_notifications(self):
        users = [UserFactory() for _ in range(3)]
        group = GroupFactory(members=users)
        store = StoreFactory(group=group)
        in_one_hour = timezone.now() + relativedelta(hours=1)
        pickup1 = PickupDateFactory(store=store, date=in_one_hour, collectors=users)
        in_two_hours = timezone.now() + relativedelta(hours=1)
        PickupDateFactory(store=store, 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,
                'store': store.id,
                'pickup': pickup1.id,
                'pickup_collector': pickup1_user1_collector.id,
            }
        )
        self.assertEqual(pickup1_user1_notification.expires_at, pickup1.date)
Example #2
0
    def test_creates_no_pickup_upcoming_notification_when_too_far_in_future(self):
        user = UserFactory()
        group = GroupFactory(members=[user])
        store = StoreFactory(group=group)
        in_one_day = timezone.now() + relativedelta(days=1)
        PickupDateFactory(store=store, date=in_one_day, 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)
Example #3
0
    def test_deletes_pickup_upcoming_notification(self):
        user = UserFactory()
        group = GroupFactory(members=[user])
        store = StoreFactory(group=group)
        in_one_hour = timezone.now() + relativedelta(hours=1)
        pickup = PickupDateFactory(store=store, 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)
Example #4
0
    def test_creates_pickup_disabled_notification_and_deletes_pickup_upcoming_notification(self):
        user1, user2 = UserFactory(), UserFactory()
        group = GroupFactory(members=[user1, user2])
        store = StoreFactory(group=group)
        in_one_hour = timezone.now() + relativedelta(hours=1)
        pickup = PickupDateFactory(store=store, 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['store'], store.id)