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); }
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); }
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); }