def test_isnt_bumped_with_penalties(self): """ Users should not be bumped if they have 3 penalties. """ self.event.start_time = timezone.now() + timedelta(days=1) self.event.merge_time = timezone.now() + timedelta(hours=12) self.event.save() self.pool_one.activation_date = timezone.now() - timedelta(days=1) self.pool_one.save() self.pool_two.activation_date = timezone.now() + timedelta(minutes=30) self.pool_two.save() users = get_dummy_users(2) Penalty.objects.create(user=users[1], reason="test", weight=3, source_event=self.event) for user in users: AbakusGroup.objects.get(name="Webkom").add_user(user) registration = Registration.objects.get_or_create(event=self.event, user=user)[0] self.event.register(registration) bump_waiting_users_to_new_pool() self.assertEqual(self.pool_two.registrations.count(), 0) self.assertEqual(self.event.waiting_registrations.count(), 1)
def test_users_are_bumped_before_pool_activation(self): """" Tests that users are bumped right before pool activation """ users = get_dummy_users(3) for user in users: AbakusGroup.objects.get(name='Webkom').add_user(user) registration = Registration.objects.get_or_create(event=self.event, user=user)[0] self.event.register(registration) self.assertEqual(self.pool_two.registrations.count(), 0) bump_waiting_users_to_new_pool() self.assertEqual(self.pool_two.registrations.count(), 2)
def test_isnt_bumped_without_permission(self): """ Tests that a waiting user isnt bumped to a pool it cant access. """ users = get_dummy_users(2) for user in users: AbakusGroup.objects.get(name='Abakus').add_user(user) registration = Registration.objects.get_or_create(event=self.event, user=user)[0] self.event.register(registration) bump_waiting_users_to_new_pool() self.assertEqual(self.pool_two.registrations.count(), 0) self.assertEqual(self.event.waiting_registrations.count(), 1)
def test_too_many_users_waiting_for_bump(self): """ Tests that only 2 users are bumped to a new pool with capacity = 2. """ users = get_dummy_users(4) registrations = [] for user in users: AbakusGroup.objects.get(name='Webkom').add_user(user) registration = Registration.objects.get_or_create(event=self.event, user=user)[0] self.event.register(registration) registrations.append(Registration.objects.get(id=registration.id)) bump_waiting_users_to_new_pool() self.assertEqual(self.pool_two.registrations.count(), 2) self.assertIsNone(registrations[3].pool)
def test_users_are_bumped_after_pool_activation(self): """ Tests that users are bumped right after pool activation. """ users = get_dummy_users(3) for user in users: AbakusGroup.objects.get(name='Webkom').add_user(user) registration = Registration.objects.get_or_create(event=self.event, user=user)[0] self.event.register(registration) self.pool_two.activation_date = timezone.now() - timedelta(minutes=30) self.pool_two.save() bump_waiting_users_to_new_pool() self.assertEqual(self.pool_two.registrations.count(), 2)
def test_isnt_bumped_if_activation_is_far_into_the_future(self): """ Users should not be bumped if the pool is activated more than 35 minutes in the future. """ self.pool_two.activation_date = timezone.now() + timedelta(minutes=40) self.pool_two.save() users = get_dummy_users(2) for user in users: AbakusGroup.objects.get(name='Webkom').add_user(user) registration = Registration.objects.get_or_create(event=self.event, user=user)[0] self.event.register(registration) bump_waiting_users_to_new_pool() self.assertEqual(self.pool_two.registrations.count(), 0) self.assertEqual(self.event.waiting_registrations.count(), 1)