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_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)
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)
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))
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)