public async void Given_null_answer_for_FaceToNames_it_should_return_400_and_warn_about_answer() { ChallengeAnswer answer = null; var logMessage = string.Format(ErrorMessages.ValueIsEmpty, nameof(answer)); var controller = CreateController(); var result = await controller.FaceToNamesChallenge(answer).ConfigureAwait(false); Verify400Result(result, logMessage); }
private ChallengeAnswerRequest(ChallengeAnswer answer) : base("challenge") { Answer = answer; // Have to reproduce base properties // since this class is a dictionary _fieldValues[nameof(Resource)] = base.Resource; foreach (var field in answer.GetFields()) { _fieldValues[field] = answer[field]; } }
private (bool, string) ValidateAnswer(ChallengeAnswer answer) { if (answer == null) { return(false, BuildErrorMessage(nameof(answer))); } if (answer.ChallengeId < 1) { return(false, BuildErrorMessage(nameof(answer.ChallengeId))); } if (string.IsNullOrEmpty(answer.GivenAnswer)) { return(false, BuildErrorMessage(nameof(answer.GivenAnswer))); } return(true, null); }
public async Task <ChallengeAnswerValidationResult> IsAnswerValidAsync(ChallengeAnswer answer) { var challenge = await _gameRepository.GetChallenge(answer.ChallengeId).ConfigureAwait(false); if (challenge == null) { return(new ChallengeAnswerValidationResult(GameConstants.NoChallengeValidationResult)); } if (challenge.Solved) { return(new ChallengeAnswerValidationResult(GameConstants.ChallengeAlreadySolvedValidationResult)); } var result = challenge.CorrectAnswer == answer.GivenAnswer; challenge.Attempts++; challenge.Solved = result; await _gameRepository.UpdateChallenge(challenge).ConfigureAwait(false); return(result ? new ChallengeAnswerValidationResult() : new ChallengeAnswerValidationResult(GameConstants.WrongAnswer)); }
public FakeChallenge(ChallengeAnswer answer) : base(ChallengeTypeKind.OTHER, "", answer) { }
public static ChallengeAnswerRequest CreateRequest(ChallengeAnswer answer) { return(new ChallengeAnswerRequest(answer)); }
public async Task <ActionResult <ChallengeAnswerValidationResult> > FaceToNamesChallenge([FromBody] ChallengeAnswer answer) { try { var(success, errorMessage) = ValidateAnswer(answer); if (!success) { _logger.LogWarning(errorMessage); return(BadRequest(errorMessage)); } return(await _gameService.IsAnswerValid(answer).ConfigureAwait(false)); } catch (Exception ex) { _logger.LogError(ex, ErrorMessages.VerifyingAnswer); return(StatusCode((int)HttpStatusCode.InternalServerError, ErrorMessages.VerifyingAnswer)); } }