public async Task <ValidationResponse> Validate(SubmitClarificationOutcomeCommand command) { var validationResponse = new ValidationResponse { Errors = new List <ValidationErrorDetail>() }; if (string.IsNullOrWhiteSpace(command.Status)) { validationResponse.Errors.Add(new ValidationErrorDetail(nameof(command.Status), StatusRequired)); } else { switch (command.Status) { case ClarificationPageReviewStatus.Pass: { var wordCount = ValidationHelper.GetWordCount(command.OptionPassText); if (wordCount > MaxWordsCount) { validationResponse.Errors.Add(new ValidationErrorDetail(nameof(command.OptionPassText), TooManyWords)); } break; } case ClarificationPageReviewStatus.Fail: { var wordCount = ValidationHelper.GetWordCount(command.OptionFailText); if (wordCount < RequiredMinimumWordsCount) { validationResponse.Errors.Add(new ValidationErrorDetail(nameof(command.OptionFailText), FailCommentRequired)); } else if (wordCount > MaxWordsCount) { validationResponse.Errors.Add(new ValidationErrorDetail(nameof(command.OptionFailText), FailTooManyWords)); } break; } } } return(await Task.FromResult(validationResponse)); }
public async Task ReviewOutcome_goes_to_are_you_sure_when_no_error() { var command = new SubmitClarificationOutcomeCommand(); _mockValidator.Setup(x => x.Validate(command)) .ReturnsAsync(new ValidationResponse { Errors = new List<ValidationErrorDetail>() } ); var outcomeReviewViewModel = new ClarificationOutcomeReviewViewModel(); _mockOrchestrator .Setup(x => x.GetClarificationOutcomeReviewViewModel(It.IsAny<ReviewClarificationOutcomeRequest>())) .ReturnsAsync(outcomeReviewViewModel); var result = await _controller.SubmitClarificationOutcome(_applicationId, command) as ViewResult; Assert.That(result.Model, Is.SameAs(outcomeReviewViewModel)); _mockOrchestrator.Verify(x => x.GetClarificationOutcomeReviewViewModel(It.IsAny<ReviewClarificationOutcomeRequest>()), Times.Once); }
public async Task ReviewOutcome_redirect_back_to_outome_when_error() { var command = new SubmitClarificationOutcomeCommand(); _mockValidator.Setup(x => x.Validate(command)) .ReturnsAsync(new ValidationResponse { Errors = new List<ValidationErrorDetail> { new ValidationErrorDetail {Field="Status", ErrorMessage = "error"} } } ); var result = await _controller.SubmitClarificationOutcome(_applicationId, command) as ViewResult; Assert.That(result.Model, Is.SameAs(_outcomeViewModel)); _mockOrchestrator.Verify(x => x.GetClarificationOutcomeViewModel(It.IsAny<GetClarificationOutcomeRequest>()), Times.Once); }
public void SetUp() { _validator = new ClarificationOutcomeValidator(); _submitClarificationOutcomeCommand = new SubmitClarificationOutcomeCommand(); _outcomeConfirmationCommand = new SubmitClarificationOutcomeConfirmationCommand(); }
public async Task <IActionResult> SubmitClarificationOutcome(Guid applicationId, SubmitClarificationOutcomeCommand command) //MFCMFC RENAME THIS { // validate var validationResponse = await _validator.Validate(command); if (validationResponse.Errors.Any()) { foreach (var error in validationResponse.Errors) { ModelState.AddModelError(error.Field, error.ErrorMessage); } } var userId = HttpContext.User.UserId(); if (!ModelState.IsValid) { var viewModel = await _outcomeOrchestrator.GetClarificationOutcomeViewModel(new GetClarificationOutcomeRequest(applicationId, userId)); viewModel.OptionPassText = command.OptionPassText; viewModel.OptionFailText = command.OptionFailText; viewModel.Status = command.Status; return(View("~/Views/ClarificationOutcome/Application.cshtml", viewModel)); } var viewModelConfirmation = await _outcomeOrchestrator.GetClarificationOutcomeReviewViewModel( new ReviewClarificationOutcomeRequest(applicationId, userId, command.Status, command.ReviewComment)); return(View("~/Views/ClarificationOutcome/AreYouSure.cshtml", viewModelConfirmation)); }