示例#1
0
        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);
        }
示例#4
0
 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));
        }