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
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#6
0
 def test_raise_value_error_when_color_is_not_allowed(self):
     with self.assertRaises(ValueError):
         CodePegColor('BLACK')
示例#7
0
 def test_can_be_created_with_allowed_value(self):
     color = CodePegColor('GREEN')
     self.assertIs('GREEN', color.value)