Beispiel #1
0
        public async Task ReturnFailureResultForMissingGameId()
        {
            var gameRepository = CreateGameRepositoryMock();
            var validator      = new GameRequestValidator(gameRepository);

            var request = new GameRequestConcrete
            {
            };

            var result = await validator.Validate(request);

            Assert.False(result.IsSuccessful);
            Assert.Equal(ValidatorErrors.Games.GameIdRequired, result.Error);
        }
Beispiel #2
0
        public async Task ReturnSuccessResultForValidData()
        {
            var gameRepository = CreateGameRepositoryMock();
            var validator      = new GameRequestValidator(gameRepository);

            var request = new GameRequestConcrete
            {
                GameId = 1
            };

            var result = await validator.Validate(request);

            Assert.True(result.IsSuccessful);
            Assert.Null(result.Error);
        }
Beispiel #3
0
        public async Task ReturnFailureResultForGameNotFound()
        {
            var gameRepository = CreateGameRepositoryMock(
                gameExists: false);
            var validator = new GameRequestValidator(gameRepository);

            var request = new GameRequestConcrete
            {
                GameId = 1
            };

            var result = await validator.Validate(request);

            Assert.False(result.IsSuccessful);
            Assert.Equal(ValidatorErrors.Games.GameNotFoundOrInactive, result.Error);
        }
        public async Task <GameResponse> Handle(GameRequest request, CancellationToken cancellationToken)
        {
            try
            {
                var validator = new GameRequestValidator().Validate(request);
                if (!validator.IsValid)
                {
                    _logger.LogError("Validation failed");
                    throw new ValidationException();
                }

                var gameRequestSpecification = _mapper.Map <GameRequestSpecification>(request);

                var isReadyToChange = gameRequestSpecification.ReadyToChangeDoor;

                var wins = await PlayGames(
                    isReadyToChange,
                    gameRequestSpecification.NumberOfSimulations);

                return(new GameResponse
                {
                    NumberOfSimulations = request.NumberOfSimulations,
                    NumberOfWin = wins,
                    NumberOfLose = request.NumberOfSimulations - wins
                });
            }
            catch (ValidationException ex)
            {
                //something special to validation exception
                _logger.LogError(ex.ToString());
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.ToString());
            }
            return(null);
        }