Example #1
0
        public async Task Orchestrator_SaveOutcomePostRequestToCache_stores_expected_values()
        {
            var request = new OutcomePostRequest();
            await _orchestrator.SaveOutcomePostRequestToCache(request);

            _cacheStorageService.Verify(x => x.SaveToCache(It.IsAny <string>(), request, 1));
        }
        public async Task <Guid> SaveOutcomePostRequestToCache(OutcomePostRequest request)
        {
            var key = Guid.NewGuid();
            await _cacheStorageService.SaveToCache(key.ToString(), request, 1);

            return(key);
        }
Example #3
0
        public void SetUp()
        {
            _validator = new OutcomePostRequestValidator();

            _request = new OutcomePostRequest
            {
                SelectedOption         = OutcomePostRequest.SubmitOption.SubmitAppealOutcome,
                SelectedAppealStatus   = AppealStatus.Successful,
                SuccessfulText         = "test",
                SuccessfulExternalText = "test"
            };
        }
        public void OversightOutcomeValidator_returns_expected_error_message_when_status_is_empty(OversightReviewStatus oversightStatus)
        {
            var request = new OutcomePostRequest
            {
                SelectedOption    = OutcomePostRequest.SubmitOption.SubmitOutcome,
                OversightStatus   = oversightStatus,
                ApproveGateway    = ApprovalStatus.Approve,
                ApproveModeration = ApprovalStatus.Approve
            };
            var result = _validator.Validate(request, options => options.IncludeRuleSets(OutcomePostRequestValidator.RuleSets.Default));

            Assert.IsTrue(result.Errors.Any(x => x.PropertyName == "OversightStatus" && x.ErrorMessage == "Select the overall outcome of this application"));
        }
        public void OversightOutcomeValidator_returns_error_when_status_is_empty(OversightReviewStatus oversightStatus, string approveGateway, string approveModeration, bool errorsExpected)
        {
            var request = new OutcomePostRequest
            {
                OversightStatus   = oversightStatus,
                ApproveGateway    = approveGateway,
                ApproveModeration = approveModeration,
                UnsuccessfulText  = oversightStatus == OversightReviewStatus.Unsuccessful ? "comments" : null
            };

            var result = _validator.Validate(request, options => options.IncludeRuleSets(OutcomePostRequestValidator.RuleSets.Default));

            Assert.AreEqual(errorsExpected, !result.IsValid);
        }
        public void OversightOutcomeValidator_unsuccessful_and_an_overturned_outcome_mandates_external_comments(bool overturnGateway, bool overturnModeration, bool expectError)
        {
            var request = new OutcomePostRequest
            {
                SelectedOption           = OutcomePostRequest.SubmitOption.SubmitOutcome,
                OversightStatus          = OversightReviewStatus.Unsuccessful,
                ApproveGateway           = overturnGateway ? ApprovalStatus.Overturn : ApprovalStatus.Approve,
                ApproveModeration        = overturnModeration ? ApprovalStatus.Overturn : ApprovalStatus.Approve,
                UnsuccessfulExternalText = string.Empty
            };

            var result = _validator.Validate(request, options => options.IncludeRuleSets(OutcomePostRequestValidator.RuleSets.Default));

            Assert.AreEqual(expectError, result.Errors.Any(x => x.PropertyName == nameof(OutcomePostRequest.UnsuccessfulExternalText) && x.ErrorMessage == "Enter external comments"));
        }
        public void OversightOutcomeValidator_in_progress_and_comments_set_returns_expected_result(string internalComments, string externalComments, int numberOfErrorsExpected)
        {
            var request = new OutcomePostRequest
            {
                SelectedOption         = OutcomePostRequest.SubmitOption.SubmitOutcome,
                ApproveGateway         = GatewayReviewStatus.Pass,
                ApproveModeration      = ModerationReviewStatus.Pass,
                OversightStatus        = OversightReviewStatus.InProgress,
                InProgressInternalText = internalComments,
                InProgressExternalText = externalComments
            };

            var result = _validator.Validate(request, options => options.IncludeRuleSets(OutcomePostRequestValidator.RuleSets.Default));

            Assert.AreEqual(numberOfErrorsExpected, result.Errors.Count);
        }
Example #8
0
        public async Task <IActionResult> Outcome([CustomizeValidator(Interceptor = typeof(OutcomeValidatorInterceptor))] OutcomePostRequest request)
        {
            var userId   = HttpContext.User.UserId();
            var userName = HttpContext.User.UserDisplayName();

            if (request.IsGatewayRemoved)
            {
                await _outcomeOrchestrator.RecordGatewayRemovedOutcome(request.ApplicationId, userId, userName);

                return(RedirectToAction("Confirmed", new { request.ApplicationId }));
            }

            if (request.IsGatewayFail)
            {
                await _outcomeOrchestrator.RecordGatewayFailOutcome(request.ApplicationId, userId, userName);

                return(RedirectToAction("Confirmed", new { request.ApplicationId }));
            }

            var cacheKey = await _oversightOrchestrator.SaveOutcomePostRequestToCache(request);

            return(RedirectToAction("ConfirmOutcome", new { applicationId = request.ApplicationId, OutcomeKey = cacheKey }));
        }
Example #9
0
        public async Task Post_Outcome_Gateway_Fail_Redirects_To_Confirmed_Page()
        {
            var viewModel = new OutcomeDetailsViewModel {
                ApplicationSummary = new ApplicationSummaryViewModel {
                    ApplicationId = _applicationDetailsApplicationId
                }
            };

            _oversightOrchestrator.Setup(x => x.GetOversightDetailsViewModel(_applicationDetailsApplicationId, null)).ReturnsAsync(viewModel);

            var command = new OutcomePostRequest
            {
                ApplicationId     = _applicationDetailsApplicationId,
                OversightStatus   = OversightReviewStatus.Unsuccessful,
                ApproveGateway    = GatewayReviewStatus.Fail,
                ApproveModeration = ModerationReviewStatus.Fail,
                UnsuccessfulText  = "test",
                IsGatewayFail     = true
            };

            var result = await _controller.Outcome(command) as RedirectToActionResult;

            Assert.AreEqual("Confirmed", result.ActionName);
        }
Example #10
0
        public async Task Post_Outcome_Gateway_Removed_Records_Gateway_Removed_Outcome()
        {
            var viewModel = new OutcomeDetailsViewModel {
                ApplicationSummary = new ApplicationSummaryViewModel {
                    ApplicationId = _applicationDetailsApplicationId
                }
            };

            _oversightOrchestrator.Setup(x => x.GetOversightDetailsViewModel(_applicationDetailsApplicationId, null)).ReturnsAsync(viewModel);

            var command = new OutcomePostRequest
            {
                ApplicationId     = _applicationDetailsApplicationId,
                OversightStatus   = OversightReviewStatus.Unsuccessful,
                ApproveGateway    = GatewayReviewStatus.Fail,
                ApproveModeration = ModerationReviewStatus.Fail,
                UnsuccessfulText  = "test",
                IsGatewayRemoved  = true
            };

            await _controller.Outcome(command);

            _outcomeOrchestrator.Verify(x => x.RecordGatewayRemovedOutcome(It.Is <Guid>(id => id == command.ApplicationId), It.IsAny <string>(), It.IsAny <string>()));
        }