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); }
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); }
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 })); }
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); }
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>())); }