Beispiel #1
0
        public async Task <IActionResult> SubmitModeratorOutcome(Guid applicationId, SubmitModeratorOutcomeCommand 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.GetInModerationOutcomeViewModel(new GetModeratorOutcomeRequest(applicationId, userId));

                viewModel.OptionPassText = command.OptionPassText;
                viewModel.OptionFailText = command.OptionFailText;
                viewModel.OptionAskForClarificationText = command.OptionAskForClarificationText;
                viewModel.Status = command.Status;

                return(View("~/Views/ModeratorOutcome/Application.cshtml", viewModel));
            }


            var viewModelConfirmation = await _outcomeOrchestrator.GetInModerationOutcomeReviewViewModel(
                new ReviewModeratorOutcomeRequest(applicationId, userId, command.Status, command.ReviewComment));

            return(View("~/Views/ModeratorOutcome/AreYouSure.cshtml", viewModelConfirmation));
        }
Beispiel #2
0
        public async Task <ValidationResponse> Validate(SubmitModeratorOutcomeCommand 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 ModeratorPageReviewStatus.Pass:
                {
                    var wordCount = ValidationHelper.GetWordCount(command.OptionPassText);
                    if (wordCount > MaxWordsCount)
                    {
                        validationResponse.Errors.Add(new ValidationErrorDetail(nameof(command.OptionPassText), TooManyWords));
                    }

                    break;
                }

                case ModeratorPageReviewStatus.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;
                }

                case ModeratorPageReviewStatus.AskForClarification:
                {
                    var wordCount = ValidationHelper.GetWordCount(command.OptionAskForClarificationText);
                    if (wordCount > MaxWordsCount)
                    {
                        validationResponse.Errors.Add(new ValidationErrorDetail(nameof(command.OptionAskForClarificationText), TooManyWords));
                    }

                    break;
                }
                }
            }

            return(await Task.FromResult(validationResponse));
        }
        public async Task ReviewOutcome_redirect_back_to_outome_when_error()
        {
            var command = new SubmitModeratorOutcomeCommand();

            _mockValidator.Setup(x => x.Validate(command))
            .ReturnsAsync(new ValidationResponse {
                Errors = new List <ValidationErrorDetail>
                {
                    new ValidationErrorDetail {
                        Field = "Status", ErrorMessage = "error"
                    }
                }
            }
                          );

            var result = await _controller.SubmitModeratorOutcome(_applicationId, command) as ViewResult;

            Assert.That(result.Model, Is.SameAs(_outcomeViewModel));
            _mockOrchestrator.Verify(x => x.GetInModerationOutcomeViewModel(It.IsAny <GetModeratorOutcomeRequest>()), Times.Once);
        }
        public async Task ReviewOutcome_goes_to_are_you_sure_when_no_error()
        {
            var command = new SubmitModeratorOutcomeCommand();

            _mockValidator.Setup(x => x.Validate(command))
            .ReturnsAsync(new ValidationResponse
            {
                Errors = new List <ValidationErrorDetail>()
            }
                          );

            var outcomeReviewViewModel = new ModeratorOutcomeReviewViewModel();

            _mockOrchestrator
            .Setup(x => x.GetInModerationOutcomeReviewViewModel(It.IsAny <ReviewModeratorOutcomeRequest>()))
            .ReturnsAsync(outcomeReviewViewModel);
            var result = await _controller.SubmitModeratorOutcome(_applicationId, command) as ViewResult;

            Assert.That(result.Model, Is.SameAs(outcomeReviewViewModel));
            _mockOrchestrator.Verify(x => x.GetInModerationOutcomeReviewViewModel(It.IsAny <ReviewModeratorOutcomeRequest>()), Times.Once);
        }
Beispiel #5
0
 public void SetUp()
 {
     _validator = new ModeratorOutcomeValidator();
     _submitModeratorOutcomeCommand = new SubmitModeratorOutcomeCommand();
     _outcomeConfirmationCommand    = new SubmitModeratorOutcomeConfirmationCommand();
 }
 public async Task SubmitPageReviewOutcome(Guid applicationId, [FromBody] SubmitModeratorOutcomeCommand request)
 {
     await _mediator.Send(new SubmitModeratorOutcomeRequest(applicationId, request.UserId, request.UserName, request.Status, request.Comment));
 }