def _build_game_code(self, code_request_param: str) -> [CodePegColor]: code_peg_colors = [] code_peg_values = json.loads(code_request_param) for code_peg_value in code_peg_values['code']: code_peg_colors.append(CodePegColor(code_peg_value)) return code_peg_colors
def test_create_a_game_and_return_the_transformed_response_as_expected( self): code_peg_repository_mock = Mock(CodePegRepository) code_peg_mock = Mock(CodePeg) code_peg_repository_mock.configure_mock( **{'find_one_by_color.return_value': code_peg_mock}) create_code_service_mock = Mock(CreateCodeService) code_mock = Mock(Code) create_code_service_mock.configure_mock( **{'execute.return_value': code_mock}) create_game_service_mock = Mock(CreateGameService) game_mock = Mock(Game) create_game_service_mock.configure_mock( **{'execute.return_value': game_mock}) data_transformer_mock = Mock(CreateGameDataTransformer) response_expected = CreateGameResponse(game_mock) data_transformer_mock.configure_mock( **{'transform.return_value': response_expected}) use_case = CreateGameUseCase(code_peg_repository_mock, create_code_service_mock, create_game_service_mock, data_transformer_mock) code_peg_color = CodePegColor('RED') code_peg_colors = [ code_peg_color, code_peg_color, code_peg_color, code_peg_color ] request = CreateGameRequest(code_peg_colors) response = use_case.execute(request) code_peg_repository_mock.find_one_by_color.assert_called_with( code_peg_color) self.assertEqual(code_peg_repository_mock.find_one_by_color.call_count, 4) code_peg_mocks = [ code_peg_mock, code_peg_mock, code_peg_mock, code_peg_mock ] create_code_service_mock.execute.assert_called_once_with( code_peg_mocks) create_game_service_mock.execute.assert_called_once_with(code_mock) self.assertEqual(response, response_expected)
def test_create_historic_entry(self): game_repository_mock = Mock(GameRepository) game_mock = Mock(Game) game_repository_mock.configure_mock( **{'find_one_by_id.return_value': game_mock}) create_feedback_by_code_guess__colors_service_mock = Mock( CreateFeedbackByCodeGuessColorsService) feedback_mock = Mock(Feedback) create_feedback_by_code_guess__colors_service_mock.configure_mock( **{'execute.return_value': feedback_mock}) create_game_historic_entry_service_mock = Mock( CreateHistoricEntryService) code_repository_mock = Mock(CodeRepository) code_guess_mock = Mock(Code) code_repository_mock.configure_mock( **{'find_one_by_colors.return_value': code_guess_mock}) data_transformer_mock = Mock( CreateFeedbackByCodeGuessColorsDataTransformer) response_expected = CreateFeedbackByCodeGuessColorsResponse( feedback_mock) data_transformer_mock.configure_mock( **{'transform.return_value': response_expected}) use_case = CreateFeedbackByCodeGuessColorsUseCase( game_repository_mock, create_feedback_by_code_guess__colors_service_mock, create_game_historic_entry_service_mock, code_repository_mock, data_transformer_mock) code_peg_color = CodePegColor('RED') code_peg_colors = [ code_peg_color, code_peg_color, code_peg_color, code_peg_color ] game_id = uuid.uuid4() request = CreateFeedbackByCodeGuessColorsRequest( game_id, code_peg_colors) use_case.execute(request) create_game_historic_entry_service_mock.execute.assert_called_once_with( game_mock, code_guess_mock, feedback_mock)
def test_it_should_create_feedback_and_save_and_return_it_as_expected( self): feedback_factory_mock = Mock(FeedbackFactory) feedback_expected = Mock(Feedback) feedback_factory_mock.configure_mock( **{'create.return_value': feedback_expected}) feedback_repository_mock = Mock(FeedbackRepository) create_feedback_service = CreateFeedbackByCodeGuessColorsService( feedback_factory_mock, feedback_repository_mock) code_guess_colors = [ CodePegColor('RED'), CodePegColor('GREEN'), CodePegColor('RED'), CodePegColor('YELLOW') ] red_code_peg = TestableCodePeg(uuid.uuid4(), CodePegColor('RED')) blue_code_peg = TestableCodePeg(uuid.uuid4(), CodePegColor('RED')) green_code_peg = TestableCodePeg(uuid.uuid4(), CodePegColor('GREEN')) code_pegs = [red_code_peg, blue_code_peg, green_code_peg, red_code_peg] code = Code(uuid.uuid4(), datetime.now(), code_pegs) game = Game(uuid.uuid4(), datetime.now(), code) feedback = create_feedback_service.execute(game, code_guess_colors) feedback_repository_mock.save.assert_called_once_with( feedback_expected) self.assertIs(feedback_expected, feedback) black_pegs_expected = 1 white_pegs_expected = 2 feedback_factory_mock.create.assert_called_once_with( black_pegs_expected, white_pegs_expected)
def color(self): return CodePegColor(self._color_value)
def test_raise_value_error_when_color_is_not_allowed(self): with self.assertRaises(ValueError): CodePegColor('BLACK')
def test_can_be_created_with_allowed_value(self): color = CodePegColor('GREEN') self.assertIs('GREEN', color.value)