Ejemplo n.º 1
0
    def test_creates_activity_disabled_notification_and_deletes_activity_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))
        activity = ActivityFactory(place=place,
                                   date=in_one_hour,
                                   participants=[user1, user2])
        Notification.objects.all().delete()

        create_activity_upcoming_notifications.call_local()
        activity.last_changed_by = user2
        activity.is_disabled = True
        activity.save()

        activity_upcoming_notifications = Notification.objects.filter(
            type=NotificationType.ACTIVITY_UPCOMING.value)
        self.assertEqual(activity_upcoming_notifications.count(), 0)

        activity_disabled_notifications = Notification.objects.filter(
            type=NotificationType.ACTIVITY_DISABLED.value)
        self.assertEqual(activity_disabled_notifications.count(), 1)
        self.assertEqual(activity_disabled_notifications[0].user, user1)
        context = activity_disabled_notifications[0].context
        self.assertEqual(context['group'], group.id)
        self.assertEqual(context['activity'], activity.id)
        self.assertEqual(context['place'], place.id)
Ejemplo n.º 2
0
    def test_create_activity_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))
        activity1 = ActivityFactory(place=place, date=in_one_hour, participants=users)
        in_two_hours = to_range(timezone.now() + relativedelta(hours=1))
        ActivityFactory(place=place, date=in_two_hours, participants=users)
        Notification.objects.all().delete()

        create_activity_upcoming_notifications.call_local()
        notifications = Notification.objects.filter(type=NotificationType.ACTIVITY_UPCOMING.value)
        self.assertEqual(notifications.count(), 6)
        self.assertEqual(set(n.user.id for n in notifications), set(user.id for user in users))
        activity1_user1_participant = ActivityParticipant.objects.get(user=users[0], activity=activity1)
        activity1_user1_notification = next(
            n for n in notifications if n.context['activity_participant'] == activity1_user1_participant.id
        )
        self.assertEqual(
            activity1_user1_notification.context, {
                'group': group.id,
                'place': place.id,
                'activity': activity1.id,
                'activity_participant': activity1_user1_participant.id,
            }
        )
        self.assertEqual(activity1_user1_notification.expires_at, activity1.date.start)
Ejemplo n.º 3
0
    def test_creates_no_activity_upcoming_notification_when_too_far_in_future(self):
        user = UserFactory()
        group = GroupFactory(members=[user])
        place = PlaceFactory(group=group)
        in_one_day = to_range(timezone.now() + relativedelta(days=1))
        ActivityFactory(place=place, date=in_one_day, participants=[user])
        Notification.objects.all().delete()

        create_activity_upcoming_notifications.call_local()
        notifications = Notification.objects.filter(type=NotificationType.ACTIVITY_UPCOMING.value)
        self.assertEqual(notifications.count(), 0)
Ejemplo n.º 4
0
    def test_deletes_activity_upcoming_notification(self):
        user = UserFactory()
        group = GroupFactory(members=[user])
        place = PlaceFactory(group=group)
        in_one_hour = to_range(timezone.now() + relativedelta(hours=1))
        activity = ActivityFactory(place=place,
                                   date=in_one_hour,
                                   participants=[user])
        Notification.objects.all().delete()

        create_activity_upcoming_notifications.call_local()
        activity.remove_participant(user)

        notifications = Notification.objects.filter(
            type=NotificationType.ACTIVITY_UPCOMING.value)
        self.assertEqual(notifications.count(), 0)