def test_troop_proposal_not_leader_fail(self):
     with self.app.app_context():
         game = game_manager.request_game(self.game_id)
         mission = game.current_mission()
         with self.assertRaises(errors.NotLeader):
             game_manager.update_mission(mission, sid='-1', players_ids=[1])
         self.assertTrue(mission.stage == model.RoundStage.troop_proposal)
예제 #2
0
    def test_game_complete_resistance_won_success(self):
        with self.app.app_context():
            game = game_manager.request_game(self.game_id)

            game_manager.update_game(game,
                                     sid=game.current_leader().sid,
                                     players_ids=[1])
            game_manager.update_game(game, sid='1', result=True)
            game_manager.update_game(game, sid='2', result=True)
            game_manager.update_game(game, sid='3', result=True)
            game_manager.update_game(game, sid='1', result=True)

            game_manager.update_game(game,
                                     sid=game.current_leader().sid,
                                     players_ids=[1, 2])
            game_manager.update_game(game, sid='1', result=True)
            game_manager.update_game(game, sid='2', result=True)
            game_manager.update_game(game, sid='3', result=True)
            game_manager.update_game(game, sid='1', result=True)
            self.assertTrue(game.current_mission().stage ==
                            model.RoundStage.mission_voting)
            self.assertTrue(game.stage == model.GameStage.executing_mission)
            game_manager.update_game(game, sid='2', result=True)

            self.assertTrue(game.stage == model.GameStage.finished)
            self.assertTrue(game.resistance_won is True)
예제 #3
0
    def test_multiple_games(self):

        self.test_game_complete_resistance_won_success()

        with self.app.app_context():
            game = game_manager.request_game(self.game_id)
            game = game_manager.new_game(game, sid=game.host.sid)

            self.game_id = game.id
            self.assertEqual(game.stage, model.GameStage.pending)
            game_manager.update_game(game, sid='1')
            self.assertEqual(game.stage, model.GameStage.executing_mission)
            game_manager.leave_game(game.id, '6', 6)
            game_manager.join_game(game, 'new', '6')
            self.assertEqual(game.stage, model.GameStage.pending)

            game_manager.update_game(game, sid='1')

            self.assertEqual(len(db.session.query(model.Game.id).all()), 2)
            self.assertEqual(len(db.session.query(model.Player.id).all()), 6)
            self.assertTrue(len(game.players), 6)

        self.test_game_complete_resistance_won_success()

        with self.app.app_context():
            self.assertEqual(len(db.session.query(model.Game.id).all()), 2)
            self.assertEqual(len(db.session.query(model.Player.id).all()), 6)
            self.assertTrue(len(game.players), 6)
 def test_mission_vote_disapprove_success(self):
     with self.app.app_context():
         game = game_manager.request_game(self.game_id)
         mission = game.current_mission()
         game_manager.update_mission(mission, sid='1', result=False)
         self.assertTrue(mission.stage == model.RoundStage.mission_results)
         self.assertTrue(mission.voting.result is False)
 def test_mission_vote_approve_wrong_user_fail(self):
     with self.app.app_context():
         game = game_manager.request_game(self.game_id)
         mission = game.current_mission()
         with self.assertRaises(errors.CantVote):
             game_manager.update_mission(mission, sid='2', result=True)
         self.assertTrue(mission.stage == model.RoundStage.mission_voting)
         self.assertTrue(mission.voting.result is None)
 def test_troop_proposal_success(self):
     with self.app.app_context():
         game = game_manager.request_game(self.game_id)
         mission = game.current_mission()
         game_manager.update_mission(mission, sid=game.current_leader().sid, players_ids=[1])
         self.assertTrue(mission.stage == model.RoundStage.troop_voting)
         self.assertTrue(len(mission.current_voting().votes) == len(game.players))
         self.assertTrue(len(mission.troop_proposals[-1].members) == 1)
         self.assertTrue(mission.troop_proposals[-1].members[0].id == 1)
 def test_troop_vote_approve_success(self):
     with self.app.app_context():
         game = game_manager.request_game(self.game_id)
         mission = game.current_mission()
         game_manager.update_mission(mission, sid=game.current_leader().sid, players_ids=[1])
         game_manager.update_mission(mission, sid='1', result=True)
         game_manager.update_mission(mission, sid='2', result=True)
         game_manager.update_mission(mission, sid='3', result=True)
         self.assertTrue(mission.stage == model.RoundStage.mission_voting)
         self.assertTrue(mission.troop_proposals[-1].voting.result is True)
 def test_troop_vote_approve_twice_vote_fail(self):
     with self.app.app_context():
         game = game_manager.request_game(self.game_id)
         mission = game.current_mission()
         game_manager.update_mission(mission, sid=game.current_leader().sid, players_ids=[1])
         game_manager.update_mission(mission, sid='1', result=True)
         game_manager.update_mission(mission, sid='2', result=True)
         with self.assertRaises(errors.CantVote):
             game_manager.update_mission(mission, sid='2', result=True)
         self.assertTrue(mission.stage == model.RoundStage.troop_voting)
         self.assertTrue(mission.troop_proposals[-1].voting.result is None)
예제 #9
0
 def test_second_mission_created(self):
     with self.app.app_context():
         game = game_manager.request_game(self.game_id)
         current_leader_sid = game.current_leader().sid
         game_manager.update_game(game,
                                  sid=game.current_leader().sid,
                                  players_ids=[1])
         game_manager.update_game(game, sid='1', result=True)
         game_manager.update_game(game, sid='2', result=True)
         game_manager.update_game(game, sid='3', result=True)
         game_manager.update_game(game, sid='1', result=True)
         self.assertTrue(len(game.missions) == 2)
         self.assertTrue(len(game.missions) == 2)
         self.assertTrue(game.current_leader().sid != current_leader_sid)
    def test_troop_vote_disapprove_mission_lose_success(self):
        with self.app.app_context():
            game = game_manager.request_game(self.game_id)
            mission = game.current_mission()
            game_manager.update_mission(mission, sid=game.current_leader().sid, players_ids=[1])
            game_manager.update_mission(mission, sid='1', result=True)
            game_manager.update_mission(mission, sid='2', result=False)
            game_manager.update_mission(mission, sid='3', result=False)

            game_manager.update_mission(mission, sid=game.current_leader().sid, players_ids=[1])
            game_manager.update_mission(mission, sid='1', result=True)
            game_manager.update_mission(mission, sid='2', result=False)
            game_manager.update_mission(mission, sid='3', result=False)

            self.assertTrue(mission.stage == model.RoundStage.mission_results)
            self.assertTrue(mission.resistance_won is False)
 def test_next_mission_troop_fail_then_success_success(self):
     with self.app.app_context():
         game = game_manager.request_game(self.game_id)
         current_mission_id = game.current_mission().id
         game_manager.update_game(game,
                                  sid=game.current_leader().sid,
                                  players_ids=[1, 2])
         game_manager.update_game(game, sid='1', result=True)
         game_manager.update_game(game, sid='2', result=False)
         game_manager.update_game(game, sid='3', result=False)
         self.assertTrue(game.current_mission().stage ==
                         model.RoundStage.troop_proposal)
         game_manager.update_game(game,
                                  sid=game.current_leader().sid,
                                  players_ids=[2, 3])
         game_manager.update_game(game, sid='1', result=True)
         game_manager.update_game(game, sid='2', result=True)
         game_manager.update_game(game, sid='3', result=True)
         self.assertTrue(game.current_mission().id == current_mission_id)
         self.assertTrue(game.current_mission().stage ==
                         model.RoundStage.mission_voting)
예제 #12
0
    def test_game_complete_resistance_won_success(self):
        with self.app.app_context():
            game = game_manager.request_game(self.game_id)

            # 1
            game_manager.update_game(game,
                                     sid=game.current_leader().sid,
                                     players_ids=[1, 2])
            game_manager.update_game(game, sid='1', result=True)
            game_manager.update_game(game, sid='2', result=True)
            game_manager.update_game(game, sid='3', result=True)
            game_manager.update_game(game, sid='4', result=True)
            game_manager.update_game(game, sid='5', result=False)
            game_manager.update_game(game, sid='6', result=False)

            game_manager.update_game(game, sid='1', result=True)
            game_manager.update_game(game, sid='2', result=True)

            # 2
            game_manager.update_game(game,
                                     sid=game.current_leader().sid,
                                     players_ids=[2, 3, 5])
            game_manager.update_game(game, sid='1', result=True)
            game_manager.update_game(game, sid='2', result=True)
            game_manager.update_game(game, sid='3', result=False)
            game_manager.update_game(game, sid='4', result=False)
            game_manager.update_game(game, sid='5', result=False)
            game_manager.update_game(game, sid='6', result=False)
            game_manager.update_game(game,
                                     sid=game.current_leader().sid,
                                     players_ids=[2, 3, 4])
            game_manager.update_game(game, sid='1', result=True)
            game_manager.update_game(game, sid='2', result=True)
            game_manager.update_game(game, sid='3', result=True)
            game_manager.update_game(game, sid='4', result=True)
            game_manager.update_game(game, sid='5', result=False)
            game_manager.update_game(game, sid='6', result=False)

            game_manager.update_game(game, sid='2', result=False)
            game_manager.update_game(game, sid='3', result=True)
            game_manager.update_game(game, sid='4', result=True)

            # 3
            game_manager.update_game(game,
                                     sid=game.current_leader().sid,
                                     players_ids=[1, 2, 3, 4])
            game_manager.update_game(game, sid='1', result=False)
            game_manager.update_game(game, sid='2', result=True)
            game_manager.update_game(game, sid='3', result=True)
            game_manager.update_game(game, sid='4', result=True)
            game_manager.update_game(game, sid='5', result=True)
            game_manager.update_game(game, sid='6', result=False)

            game_manager.update_game(game, sid='1', result=True)
            game_manager.update_game(game, sid='2', result=True)
            game_manager.update_game(game, sid='3', result=True)
            game_manager.update_game(game, sid='4', result=True)

            # 4
            # import json
            # print(json.dumps(game.to_dict()))
            game_manager.update_game(game,
                                     sid=game.current_leader().sid,
                                     players_ids=[1, 3, 4])
            game_manager.update_game(game, sid='1', result=False)
            game_manager.update_game(game, sid='2', result=True)
            game_manager.update_game(game, sid='3', result=True)
            game_manager.update_game(game, sid='4', result=True)
            game_manager.update_game(game, sid='5', result=True)
            game_manager.update_game(game, sid='6', result=False)

            game_manager.update_game(game, sid='1', result=True)
            game_manager.update_game(game, sid='3', result=True)
            game_manager.update_game(game, sid='4', result=True)

            self.assertTrue(game.stage == model.GameStage.finished)
            self.assertTrue(game.resistance_won is True)
 def test_troop_proposal_wrong_troop_size_fail(self):
     with self.app.app_context():
         game = game_manager.request_game(self.game_id)
         with self.assertRaises(errors.InvalidPlayersNumber):
             game_manager.update_mission(game.current_mission(), sid=game.current_leader().sid, players_ids=[1, 2])
         self.assertTrue(game.current_mission().stage == model.RoundStage.troop_proposal)
 def test_mission_started_success(self):
     with self.app.app_context():
         game = game_manager.request_game(self.game_id)
         mission = game.current_mission()
         self.assertTrue(mission.stage == model.RoundStage.troop_proposal)