def test_reciprocal_pairing(self): """ Two participants who request each other are reciprocally paired. """ bonnie = ParticipantFactory.create() clyde = ParticipantFactory.create() LotteryInfoFactory.create(participant=bonnie, paired_with=clyde) LotteryInfoFactory.create(participant=clyde, paired_with=bonnie) self.expect_pairing({bonnie: True, clyde: True})
def test_user_with_participant(self): """ When the user has created a participant, it's injected into the request.""" self.request.user = self.user participant = ParticipantFactory.create(user_id=self.user.pk) self.pm(self.request) self.assertEqual(self.request.participant, participant)
def test_nulls_do_not_mean_equal(self): """ Participants that want no pairing aren't accidentallly paired. This checks an implementation detail, ensuring that null==null doesn't amount to the SQL query mistakenly regarding participants as paired. """ no_lotteryinfo_1 = ParticipantFactory.create(lotteryinfo=None) no_lotteryinfo_2 = ParticipantFactory.create(lotteryinfo=None) alone_1 = LotteryInfoFactory.create(paired_with=None) alone_2 = LotteryInfoFactory.create(paired_with=None) self.expect_pairing( { no_lotteryinfo_1: False, no_lotteryinfo_2: False, alone_1.participant: False, alone_2.participant: False, } )
def test_deterministic_ranking(self): """ Ranking of a particular single trip is based on its pk. """ trip = TripFactory.create(activity='hiking', pk=822) # TODO: This test relies pretty heavily on the database and is very slow participants = [] for i in range(5): par = ParticipantFactory.create(name=f"Participant Num{i}") SignUpFactory.create(participant=par, trip=trip) participants.append(par) self.assertEqual( list(rank.SingleTripParticipantRanker(trip)), list(rank.SingleTripParticipantRanker(trip)), )
def test_no_lotteryinfo(self): """ No lottery info still counts as not being paired. """ no_lotteryinfo = ParticipantFactory.create(lotteryinfo=None) self.expect_pairing({no_lotteryinfo: False})
def setUp(self): self.participant = ParticipantFactory.create() self.ranker = rank.WinterSchoolParticipantRanker()
def test_cannot_make_chair_for_open_activity(self): """ You can't make somebody the chair of an open activity. """ valid_participant = ParticipantFactory.create() open_activity = models.BaseRating.OFFICIAL_EVENT with self.assertRaises(ValueError): perm_utils.make_chair(valid_participant.user, open_activity)
def test_no_lotteryinfo(self): """No lottery info still counts as not being paired.""" no_lotteryinfo = ParticipantFactory.create(lotteryinfo=None) self.expect_pairing({no_lotteryinfo: False})