def test_end_turn(self):
     result = self.turn.end_turn()
     self.assertEqual(result, Player(name="Katherine Ryan", date_of_birth="1983-06-30",
                                     is_associate=True, position=2, is_host=False))
     self.assertEqual(self.turn.players, [Player(name="Katherine Ryan", date_of_birth="1983-06-30",
                                                 is_associate=True, position=2, is_host=False),
                                          Player(name="Iliza Shlesinger", date_of_birth="1983-02-22",
                                                 is_associate=False, position=3, is_host=False),
                                          Player(name="Tina Fey", date_of_birth="1970-05-18",
                                                 is_associate=False, position=4, is_host=False),
                                          Player(name="John Doe", date_of_birth="1990-04-03",
                                                 is_associate=True, position=1, is_host=True)])
Exemple #2
0
    def test_create_player_from_dict_and_convert_player_to_dict(self):
        player_dict = {
            "name": "John Doe",
            "date_of_birth": "1990-04-03",
            "is_associate": True,
            "position": 1,
            "is_host": True
        }

        player = Player.from_dict(player_dict)
        response = Player.to_dict(player)
        self.assertEqual(response, player_dict)
Exemple #3
0
    def test_convert_player_to_dict(self):
        player_dict = {
            "name": "John Doe",
            "date_of_birth": "1990-04-03",
            "is_associate": True,
            "position": 1,
            "is_host": True
        }

        player = Player(name="John Doe",
                        date_of_birth="1990-04-03",
                        is_associate=True,
                        position=1,
                        is_host=True)

        response = Player.to_dict(player)
        self.assertEqual(response, player_dict)
    def test_a_player_skip_turns(self):
        players = [Player(name="Sarah Silverman", date_of_birth="1970-12-01", is_associate=False,
                          position=1, is_host=False),
                   Player(name="Gabriel Iglesias", date_of_birth="1976-07-15", is_associate=False,
                          position=2, is_host=True)]

        turn = Turn(players)

        # sarah turns
        turn.skip()
        turn.end_turn()

        # gabriel turns
        result = turn.end_turn()

        self.assertEqual(result, Player(name="Gabriel Iglesias", date_of_birth="1976-07-15", is_associate=False,
                                        position=2, is_host=True))
        self.assertEqual(turn.players, players)
        self.assertFalse(turn.skipped_players)
Exemple #5
0
    def test_player_init(self):
        player = Player(name="John Doe",
                        date_of_birth="1990-04-03",
                        is_associate=True,
                        position=1,
                        is_host=True)

        self.assertEqual(player.name, 'John Doe')
        self.assertEqual(player.date_of_birth, '1990-04-03')
        self.assertEqual(player.is_associate, True)
        self.assertEqual(player.position, 1)
        self.assertEqual(player.is_host, True)
    def test_end_turn_and_get_next_player(self, mock_find_session_by_name,
                                          mock_end_turn):
        result = self.session_started.end_turn(self.session_name)

        mock_find_session_by_name.assert_called_once_with(self.session_name)
        mock_end_turn.assert_called_once()
        self.assertEqual(
            result,
            Player(name="Katherine Ryan",
                   date_of_birth="1983-06-30",
                   is_associate=True,
                   position=2,
                   is_host=False))
    def test_get_current_player(self, mock_find_session_by_name,
                                mock_get_current_player):
        result = self.session_started.current_player(self.session_name)

        mock_find_session_by_name.assert_called_once_with(self.session_name)
        mock_get_current_player.assert_called_once()
        self.assertEqual(
            result,
            Player(name="John Doe",
                   date_of_birth="1990-04-03",
                   is_associate=True,
                   position=1,
                   is_host=True))
Exemple #8
0
    def test_create_player_from_dict(self):
        player_dict = {
            "name": "John Doe",
            "date_of_birth": "1990-04-03",
            "is_associate": True,
            "position": 1,
            "is_host": True
        }

        player = Player.from_dict(player_dict)
        self.assertEqual(player.name, 'John Doe')
        self.assertEqual(player.date_of_birth, '1990-04-03')
        self.assertEqual(player.is_associate, True)
        self.assertEqual(player.position, 1)
        self.assertEqual(player.is_host, True)
class TurnTest(unittest.TestCase):
    players = [
        Player(
            name="John Doe",
            date_of_birth="1990-04-03",
            is_associate=True,
            position=1,
            is_host=True
        ),
        Player(
            name="Katherine Ryan",
            date_of_birth="1983-06-30",
            is_associate=True,
            position=2,
            is_host=False
        ),
        Player(
            name="Iliza Shlesinger",
            date_of_birth="1983-02-22",
            is_associate=False,
            position=3,
            is_host=False
        ),
        Player(
            name="Tina Fey",
            date_of_birth="1970-05-18",
            is_associate=False,
            position=4,
            is_host=False
        )]

    turn = Turn(players=players)

    def test_turn_init(self):
        turn = Turn(players=self.players)

        self.assertEqual(turn.players[0], self.players[0])
        self.assertEqual(turn.players[1], self.players[1])
        self.assertEqual(turn.players[2], self.players[2])
        self.assertEqual(turn.players[3], self.players[3])

    def test_current_player(self):
        result = self.turn.current_player()
        self.assertEqual(result, self.players[0])

    def test_end_turn(self):
        result = self.turn.end_turn()
        self.assertEqual(result, Player(name="Katherine Ryan", date_of_birth="1983-06-30",
                                        is_associate=True, position=2, is_host=False))
        self.assertEqual(self.turn.players, [Player(name="Katherine Ryan", date_of_birth="1983-06-30",
                                                    is_associate=True, position=2, is_host=False),
                                             Player(name="Iliza Shlesinger", date_of_birth="1983-02-22",
                                                    is_associate=False, position=3, is_host=False),
                                             Player(name="Tina Fey", date_of_birth="1970-05-18",
                                                    is_associate=False, position=4, is_host=False),
                                             Player(name="John Doe", date_of_birth="1990-04-03",
                                                    is_associate=True, position=1, is_host=True)])

    def test_a_player_skip_turns(self):
        players = [Player(name="Sarah Silverman", date_of_birth="1970-12-01", is_associate=False,
                          position=1, is_host=False),
                   Player(name="Gabriel Iglesias", date_of_birth="1976-07-15", is_associate=False,
                          position=2, is_host=True)]

        turn = Turn(players)

        # sarah turns
        turn.skip()
        turn.end_turn()

        # gabriel turns
        result = turn.end_turn()

        self.assertEqual(result, Player(name="Gabriel Iglesias", date_of_birth="1976-07-15", is_associate=False,
                                        position=2, is_host=True))
        self.assertEqual(turn.players, players)
        self.assertFalse(turn.skipped_players)

    def test_all_players_skip_turns(self):
        players = [Player(name="Sarah Silverman", date_of_birth="1970-12-01", is_associate=False,
                          position=1, is_host=False),
                   Player(name="Gabriel Iglesias", date_of_birth="1976-07-15", is_associate=False,
                          position=2, is_host=True)]

        turn = Turn(players)

        # sarah turns
        turn.skip()
        turn.end_turn()

        # gabriel turns
        turn.skip()
        result = turn.end_turn()

        self.assertEqual(result, Player(name="Sarah Silverman", date_of_birth="1970-12-01", is_associate=False,
                                        position=1, is_host=False))
        self.assertEqual(turn.players, players)
        self.assertFalse(turn.skipped_players)

    def test_player_skip_multiple_turns(self):
        players = [Player(name="Sarah Silverman", date_of_birth="1970-12-01", is_associate=False,
                          position=1, is_host=False),
                   Player(name="Gabriel Iglesias", date_of_birth="1976-07-15", is_associate=False,
                          position=2, is_host=True)]

        turn = Turn(players)

        # sarah turns
        turn.skip()
        turn.skip()
        turn.skip()
        turn.end_turn()

        # gabriel turn
        result = turn.end_turn()

        self.assertEqual(result, Player(name="Gabriel Iglesias", date_of_birth="1976-07-15", is_associate=False,
                                        position=2, is_host=True))
        self.assertEqual(turn.players, players)
        self.assertEqual(turn.skipped_players, [Player(name="Sarah Silverman", date_of_birth="1970-12-01",
                                                       is_associate=False, position=1, is_host=False),
                                                Player(name="Sarah Silverman", date_of_birth="1970-12-01",
                                                       is_associate=False, position=1, is_host=False)])
class GameSessionTest(unittest.TestCase):
    players = [
        Player(name="John Doe",
               date_of_birth="1990-04-03",
               is_associate=True,
               position=1,
               is_host=True),
        Player(name="Katherine Ryan",
               date_of_birth="1983-06-30",
               is_associate=True,
               position=2,
               is_host=False),
        Player(name="Iliza Shlesinger",
               date_of_birth="1983-02-22",
               is_associate=False,
               position=3,
               is_host=False),
        Player(name="Tina Fey",
               date_of_birth="1970-05-18",
               is_associate=False,
               position=4,
               is_host=False)
    ]

    turn = Turn(players)

    session_name = "A comedianne walks into a bar..."

    session = GameSession(name=session_name)

    session_with_players = GameSession(name=session_name, players=players)

    session_started = GameSession(name=session_name,
                                  players=players,
                                  turn=turn,
                                  started=True)

    session_finished = GameSession(name=session_name,
                                   players=players,
                                   turn=turn,
                                   started=True,
                                   finished=True)

    @patch("project.repository.session_repository.save")
    def test_create_session(self, mock_save):
        result = GameSession.create_session(self.session_name)

        mock_save.assert_called_once()
        self.assertEqual(result.name, self.session_name)

    @patch("project.repository.session_repository.update")
    @patch("project.repository.session_repository.find_session_by_name",
           return_value=GameSession(name=session_name))
    def test_add_players_to_session(self, mock_find_session_by_name,
                                    mock_update):
        result = self.session.add_players(self.session_name, self.players)

        mock_find_session_by_name.assert_called_once_with(self.session_name)
        mock_update.assert_called_once()
        self.assertEqual(result.name, self.session_name)
        self.assertEqual(result.players, self.players)

    @patch("project.use_cases.turn.Turn.current_player",
           return_value=Player(name="John Doe",
                               date_of_birth="1990-04-03",
                               is_associate=True,
                               position=1,
                               is_host=True))
    @patch("project.repository.session_repository.update")
    @patch("project.repository.session_repository.find_session_by_name",
           return_value=GameSession(name=session_name, players=players))
    def test_start_session(self, mock_find_session_by_name, mock_update,
                           mock_get_current_player):
        result = self.session_with_players.start(self.session_name)

        mock_find_session_by_name.assert_called_once_with(self.session_name)
        mock_update.assert_called_once()
        mock_get_current_player.assert_called_once()
        self.assertEqual(
            result,
            Player(name="John Doe",
                   date_of_birth="1990-04-03",
                   is_associate=True,
                   position=1,
                   is_host=True))

    @patch("project.repository.session_repository.find_session_by_name",
           return_value=GameSession(name=session_name))
    def test_raise_BusinessException_when_try_start_session_without_players(
            self, mock_find_session_by_name):
        with self.assertRaises(Exception):
            self.session.start(self.session_name)
            mock_find_session_by_name.assert_called_once_with(
                self.session_name)

    @patch("project.repository.session_repository.update")
    @patch("project.repository.session_repository.find_session_by_name",
           return_value=GameSession(name=session_name,
                                    players=players,
                                    turn=turn,
                                    started=True))
    def test_finish_session(self, mock_find_session_by_name, mock_update):
        result = self.session_started.finish(self.session_name)

        mock_find_session_by_name.assert_called_once_with(self.session_name)
        mock_update.assert_called_once()
        self.assertEqual(result.name, self.session_name)
        self.assertEqual(result.players, self.players)
        self.assertTrue(result.finished)

    @patch("project.repository.session_repository.find_session_by_name",
           return_value=GameSession(name=session_name))
    def test_raise_BusinessException_when_try_finish_not_started_session(
            self, mock_find_session_by_name):
        with self.assertRaises(Exception):
            self.session.finish(self.session_name)
            mock_find_session_by_name.assert_called_once_with(
                self.session_name)

    @patch("project.use_cases.turn.Turn.current_player",
           return_value=Player(name="John Doe",
                               date_of_birth="1990-04-03",
                               is_associate=True,
                               position=1,
                               is_host=True))
    @patch("project.repository.session_repository.find_session_by_name",
           return_value=GameSession(name=session_name,
                                    players=players,
                                    turn=turn,
                                    started=True))
    def test_get_current_player(self, mock_find_session_by_name,
                                mock_get_current_player):
        result = self.session_started.current_player(self.session_name)

        mock_find_session_by_name.assert_called_once_with(self.session_name)
        mock_get_current_player.assert_called_once()
        self.assertEqual(
            result,
            Player(name="John Doe",
                   date_of_birth="1990-04-03",
                   is_associate=True,
                   position=1,
                   is_host=True))

    @patch("project.repository.session_repository.find_session_by_name",
           return_value=GameSession(name=session_name, players=players))
    def test_raise_BusinessExcpetion_when_try_get_current_player_before_started_session(
            self, mock_find_session_by_name):
        with self.assertRaises(Exception):
            self.session_with_players.current_player(self.session_with_players)
            mock_find_session_by_name.assert_called_once_with(
                self.session_name)

    @patch("project.repository.session_repository.find_session_by_name",
           return_value=GameSession(name=session_name,
                                    players=players,
                                    turn=turn,
                                    started=True,
                                    finished=True))
    def test_raise_BusinessExcpetion_when_try_get_current_player_after_finished_session(
            self, mock_find_session_by_name):
        with self.assertRaises(Exception):
            self.session_with_players.current_player(self.session_finished)
            mock_find_session_by_name.assert_called_once_with(
                self.session_name)

    @patch("project.use_cases.turn.Turn.end_turn",
           return_value=Player(name="Katherine Ryan",
                               date_of_birth="1983-06-30",
                               is_associate=True,
                               position=2,
                               is_host=False))
    @patch("project.repository.session_repository.find_session_by_name",
           return_value=GameSession(name=session_name,
                                    players=players,
                                    turn=turn,
                                    started=True))
    def test_end_turn_and_get_next_player(self, mock_find_session_by_name,
                                          mock_end_turn):
        result = self.session_started.end_turn(self.session_name)

        mock_find_session_by_name.assert_called_once_with(self.session_name)
        mock_end_turn.assert_called_once()
        self.assertEqual(
            result,
            Player(name="Katherine Ryan",
                   date_of_birth="1983-06-30",
                   is_associate=True,
                   position=2,
                   is_host=False))

    @patch("project.repository.session_repository.find_session_by_name",
           return_value=GameSession(name=session_name, players=players))
    def test_raise_BusinessExcpetion_when_try_get_next_player_before_started_session(
            self, mock_find_session_by_name):
        with self.assertRaises(Exception):
            self.session_with_players.end_turn(self.session_with_players)
            mock_find_session_by_name.assert_called_once_with(
                self.session_name)

    @patch("project.repository.session_repository.find_session_by_name",
           return_value=GameSession(name=session_name,
                                    players=players,
                                    turn=turn,
                                    started=True,
                                    finished=True))
    def test_raise_BusinessExcpetion_when_try_get_next_player_after_finished_session(
            self, mock_find_session_by_name):
        with self.assertRaises(Exception):
            self.session_with_players.end_turn(self.session_finished)
            mock_find_session_by_name.assert_called_once_with(
                self.session_name)

    @patch("project.use_cases.turn.Turn.skip", return_value=turn)
    @patch("project.repository.session_repository.find_session_by_name",
           return_value=GameSession(name=session_name,
                                    players=players,
                                    turn=turn,
                                    started=True))
    def test_skip_turn(self, mock_find_session_by_name, mock_skip_turn):
        self.session_started.skip_turn(self.session_name)

        mock_find_session_by_name.assert_called_once_with(self.session_name)
        mock_skip_turn.assert_called_once()

    @patch("project.repository.session_repository.find_session_by_name",
           return_value=GameSession(name=session_name, players=players))
    def test_raise_BusinessExcpetion_when_try_skip_turn_before_started_session(
            self, mock_find_session_by_name):
        with self.assertRaises(Exception):
            self.session_with_players.skip_turn(self.session_name)
            mock_find_session_by_name.assert_called_once_with(
                self.session_name)

    @patch("project.repository.session_repository.find_session_by_name",
           return_value=GameSession(name=session_name,
                                    players=players,
                                    turn=turn,
                                    started=True,
                                    finished=True))
    def test_raise_BusinessExcpetion_when_try_skip_turn_after_finished_session(
            self, mock_find_session_by_name):
        with self.assertRaises(Exception):
            self.session_with_players.skip_turn(self.session_name)
            mock_find_session_by_name.assert_called_once_with(
                self.session_name)