class TournamentInProgress(AppSimulatingTest): def setUp(self): super(TournamentInProgress, self).setUp() self.name = 'test_in_progress' self.player_1 = 'p1' self.injector.inject(self.name, num_players=0) self.injector.add_player(self.name, self.player_1) self.tournament = Tournament(self.name) self.tournament.update({ 'rounds': 1, 'missions': ['mission01'], 'score_categories': [score_cat_args('cat', 100, True, 1, 1, False)] }) def test_default_state(self): self.assertFalse(self.tournament.get_dao().in_progress) def test_no_categories(self): self.tournament.update({'score_categories': []}) self.assertRaises(ValueError, self.tournament.set_in_progress) def test_no_entries(self): self.tournament.update({'rounds': 0}) dao = self.tournament.get_dao() Reg.query.filter_by(tournament_id=dao.id).delete() TournamentEntry.query.filter_by(tournament_id=dao.name).delete() self.assertRaises(ValueError, self.tournament.set_in_progress) def test_no_missions(self): self.tournament.update({'rounds': 0}) self.tournament.update({'rounds': 1}) self.assertRaises(ValueError, self.tournament.set_in_progress) def test_no_rounds(self): self.tournament.update({'rounds': 0}) self.assertRaises(ValueError, self.tournament.set_in_progress) def test_set_in_progress(self): self.tournament.set_in_progress() self.assertTrue(self.tournament.get_dao().in_progress) def test_non_finalised_only_actions(self): self.tournament.set_in_progress() args = score_cat_args('disallowed_cat', 100, True, 1, 1) self.assertRaises(ValueError, self.tournament.update, {'score_categories': [args]}) self.assertRaises(ValueError, self.tournament.update, {'rounds': 5}) rego = Reg(self.player_1, self.name) rego.add_to_db() self.assertRaises(ValueError, self.tournament.confirm_entries)
def test_enter_score(self): """ Enter a score for an entry """ entry = TournamentEntry.query.filter_by( player_id=self.player, tournament_id=self.tourn_1).first() tourn = Tournament(self.tourn_1) # a one-off score Score(category=self.cat_1.name, tournament=tourn, entry_id=entry.id, score=0).write() scores = TournamentScore.query.\ filter_by(entry_id=entry.id, tournament_id=tourn.get_dao().id).all() compare(len(scores), 1) compare(scores[0].score.value, 0) # a per_round score tourn.make_draws() round_id = TournamentRound.query.\ filter_by(tournament_name=self.tourn_1, ordering=2).first().id game_id = TournamentGame.query.join(GameEntrant).\ filter(and_(GameEntrant.entrant_id == entry.id, TournamentGame.tournament_round_id == round_id)).\ first().id Score(category=self.category_2.name, tournament=tourn, game_id=game_id, entry_id=entry.id, score=17).write() scores = GameScore.query.\ filter_by(entry_id=entry.id, game_id=game_id).all() compare(len(scores), 1) compare(scores[0].score.value, 17) # score already entered score = Score(tournament=tourn, entry_id=entry.id, score=100, category=self.cat_1.name) self.assertRaises(ValueError, score.write) score = Score(tournament=tourn, entry_id=entry.id, score=100, category=self.category_2.name, game_id=game_id) self.assertRaises(ValueError, score.write)