public async Task saving_initial_teacher_training_saves_clarification_result() { var applicationId = Guid.NewGuid(); var pageId = GatewayPageIds.InitialTeacherTraining; var vm = new InitialTeacherTrainingViewModel { ApplicationId = applicationId, PageId = pageId, Status = SectionReviewStatus.Pass, SourcesCheckedOn = DateTime.Now, ErrorMessages = new List <ValidationErrorDetail>(), OptionPassText = "Some pass text", ClarificationAnswer = ClarificationAnswer }; var command = new SubmitGatewayPageAnswerCommand(vm); GatewayValidator.Setup(v => v.ValidateClarification(command)).ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail>() }); await _controller.ClarifyInitialTeacherTrainingPage(command); ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswerPostClarification(applicationId, pageId, vm.Status, UserId, Username, vm.OptionPassText, ClarificationAnswer)); }
public async Task saving_office_for_students_saves_evaluation_result() { var applicationId = Guid.NewGuid(); var pageId = GatewayPageIds.OfficeForStudents; var vm = new OfficeForStudentsViewModel { ApplicationId = applicationId, PageId = pageId, Status = SectionReviewStatus.Pass, SourcesCheckedOn = DateTime.Now, ErrorMessages = new List <ValidationErrorDetail>(), OptionPassText = "Some pass text" }; var command = new SubmitGatewayPageAnswerCommand(vm); GatewayValidator.Setup(v => v.Validate(command)).ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail>() }); await _controller.EvaluateOfficeForStudentsPage(command); ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswer(applicationId, pageId, vm.Status, UserId, Username, vm.OptionPassText, null)); }
public async Task clarifying_initial_teacher_training_without_required_fields_does_not_save() { var applicationId = Guid.NewGuid(); var pageId = GatewayPageIds.InitialTeacherTraining; var vm = new InitialTeacherTrainingViewModel() { Status = SectionReviewStatus.Fail, SourcesCheckedOn = DateTime.Now, ErrorMessages = new List <ValidationErrorDetail>(), ApplicationId = applicationId, PageId = pageId, ClarificationAnswer = ClarificationAnswer }; var command = new SubmitGatewayPageAnswerCommand(vm); GatewayValidator.Setup(v => v.ValidateClarification(command)) .ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail> { new ValidationErrorDetail { Field = "OptionFail", ErrorMessage = "needs text" } } } ); _orchestrator.Setup(x => x.GetInitialTeacherTrainingViewModel(It.Is <GetInitialTeacherTrainingRequest>(y => y.ApplicationId == vm.ApplicationId && y.UserName == Username))).ReturnsAsync(vm); await _controller.ClarifyInitialTeacherTrainingPage(command); ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswer(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), ClarificationAnswer), Times.Never); }
public void post_people_in_control_path_with_errors() { var vm = ViewModel; var command = new SubmitGatewayPageAnswerCommand(vm); GatewayValidator.Setup(v => v.Validate(command)) .ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail> { new ValidationErrorDetail { Field = "OptionFail", ErrorMessage = "needs text" } } } ); vm.PageId = GatewayPageIds.PeopleInControlRisk; vm.SourcesCheckedOn = DateTime.Now; _orchestrator.Setup(x => x.GetPeopleInControlViewModel(Request)) .ReturnsAsync(vm) .Verifiable("view model not returned"); var result = (ViewResult)_controller.EvaluatePeopleInControlPage(command).Result; var resultModel = (PeopleInControlPageViewModel)result.Model; GatewayValidator.Verify(x => x.Validate(command), Times.Once); Assert.AreEqual(1, resultModel.ErrorMessages.Count); }
public async Task saving_office_for_students_without_required_fields_does_not_save() { var applicationId = Guid.NewGuid(); var pageId = GatewayPageIds.OfficeForStudents; var vm = new OfficeForStudentsViewModel { Status = SectionReviewStatus.Fail, SourcesCheckedOn = DateTime.Now, ErrorMessages = new List <ValidationErrorDetail>(), ApplicationId = applicationId, PageId = pageId }; var command = new SubmitGatewayPageAnswerCommand(vm); GatewayValidator.Setup(v => v.Validate(command)) .ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail> { new ValidationErrorDetail { Field = "OptionFail", ErrorMessage = "needs text" } } } ); _orchestrator.Setup(x => x.GetOfficeForStudentsViewModel(It.Is <GetOfficeForStudentsRequest>(y => y.ApplicationId == vm.ApplicationId && y.UserName == Username))).ReturnsAsync(vm); await _controller.EvaluateOfficeForStudentsPage(command); ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswer(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), null), Times.Never); }
public void Organisation_criminal_compliance_check_result_is_saved(string gatewayPageId, string clarificationAnswer) { var model = new CriminalCompliancePageViewModel { ApplicationId = Guid.NewGuid(), ApplyLegalName = "legal name", ComplianceCheckQuestionId = "CC-20", ComplianceCheckAnswer = "No", OptionPassText = "check passed", Status = "Pass", PageId = gatewayPageId, QuestionText = "Question text", Ukprn = "10001234", ClarificationAnswer = clarificationAnswer }; var validationResponse = new ValidationResponse { Errors = new List <ValidationErrorDetail>() }; var command = new SubmitGatewayPageAnswerCommand(model); GatewayValidator.Setup(x => x.Validate(command)).ReturnsAsync(validationResponse); var result = _controller.EvaluateCriminalCompliancePage(command).GetAwaiter().GetResult(); var redirectResult = result as RedirectToActionResult; redirectResult.Should().NotBeNull(); redirectResult.ActionName.Should().Be("ViewApplication"); ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswer(model.ApplicationId, gatewayPageId, model.Status, UserId, Username, model.OptionPassText, clarificationAnswer), Times.Once); }
public void post_organisation_status_clarification_happy_path() { var applicationId = Guid.NewGuid(); var pageId = "1-30"; var viewModel = new OrganisationStatusViewModel() { Status = SectionReviewStatus.Pass, SourcesCheckedOn = DateTime.Now, ErrorMessages = new List <ValidationErrorDetail>(), ClarificationAnswer = ClarificationAnswer }; viewModel.SourcesCheckedOn = DateTime.Now; var command = new SubmitGatewayPageAnswerCommand(viewModel); GatewayValidator.Setup(v => v.ValidateClarification(command)).ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail>() }); ApplyApiClient.Setup(x => x.SubmitGatewayPageAnswer(applicationId, pageId, viewModel.Status, UserId, Username, It.IsAny <string>())); var result = _controller.ClarifyOrganisationStatus(command).Result; ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswerPostClarification(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), ClarificationAnswer), Times.Once); _orchestrator.Verify(x => x.GetOrganisationStatusViewModel(It.IsAny <GetOrganisationStatusRequest>()), Times.Never()); }
public void post_legal_name_clarification_happy_path() { var applicationId = Guid.NewGuid(); var pageId = "1-10"; var vm = new LegalNamePageViewModel { Status = SectionReviewStatus.Pass, SourcesCheckedOn = DateTime.Now, ErrorMessages = new List <ValidationErrorDetail>(), ClarificationAnswer = ClarificationAnswer }; vm.SourcesCheckedOn = DateTime.Now; var command = new SubmitGatewayPageAnswerCommand(vm); var pageData = JsonConvert.SerializeObject(vm); GatewayValidator.Setup(v => v.ValidateClarification(command)).ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail>() }); ApplyApiClient.Setup(x => x.SubmitGatewayPageAnswer(applicationId, pageId, vm.Status, UserId, Username, It.IsAny <string>())); var result = _controller.ClarifyIcoNumberPage(command).Result; ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswerPostClarification(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), ClarificationAnswer), Times.Once); _orchestrator.Verify(x => x.GetLegalNameViewModel(It.IsAny <GetLegalNameRequest>()), Times.Never()); }
public void post_website_address_clarification_happy_path() { var applicationId = Guid.NewGuid(); var pageId = GatewayPageIds.WebsiteAddress; var vm = new WebsiteViewModel { ApplicationId = applicationId, Status = SectionReviewStatus.Pass, SourcesCheckedOn = DateTime.Now, ErrorMessages = new List <ValidationErrorDetail>(), OptionPassText = comment, PageId = pageId, ClarificationAnswer = ClarificationAnswer }; var command = new SubmitGatewayPageAnswerCommand(vm); GatewayValidator.Setup(v => v.ValidateClarification(command)).ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail>() }); var result = _controller.ClarifyWebsitePage(command).Result; ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswerPostClarification(applicationId, pageId, vm.Status, UserId, Username, comment, ClarificationAnswer)); _orchestrator.Verify(x => x.GetWebsiteViewModel(new GetWebsiteRequest(applicationId, UserId, Username)), Times.Never()); }
public void post_website_address_clarification_path_with_errors() { var applicationId = Guid.NewGuid(); var vm = new WebsiteViewModel { ApplicationId = applicationId, Status = SectionReviewStatus.Fail, SourcesCheckedOn = DateTime.Now, ErrorMessages = new List <ValidationErrorDetail>(), ClarificationAnswer = ClarificationAnswer }; var command = new SubmitGatewayPageAnswerCommand(vm); GatewayValidator.Setup(v => v.ValidateClarification(command)) .ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail> { new ValidationErrorDetail { Field = "OptionFail", ErrorMessage = "needs text" } } } ); _orchestrator.Setup(x => x.GetWebsiteViewModel(It.Is <GetWebsiteRequest>(y => y.ApplicationId == vm.ApplicationId && y.UserName == Username))).ReturnsAsync(vm); var result = _controller.ClarifyWebsitePage(command).Result; ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswer(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never); }
public void post_legal_name_clarification_path_with_errors() { var applicationId = Guid.NewGuid(); var pageId = "1-20"; var vm = new LegalNamePageViewModel { Status = SectionReviewStatus.Fail, SourcesCheckedOn = DateTime.Now, ErrorMessages = new List <ValidationErrorDetail>(), ClarificationAnswer = ClarificationAnswer }; vm.ApplicationId = applicationId; vm.PageId = vm.PageId; vm.SourcesCheckedOn = DateTime.Now; var command = new SubmitGatewayPageAnswerCommand(vm); GatewayValidator.Setup(v => v.ValidateClarification(command)) .ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail> { new ValidationErrorDetail { Field = "OptionFail", ErrorMessage = "needs text" } } } ); _orchestrator.Setup(x => x.GetLegalNameViewModel(It.Is <GetLegalNameRequest>(y => y.ApplicationId == vm.ApplicationId && y.UserName == Username))).ReturnsAsync(vm); var pageData = JsonConvert.SerializeObject(vm); GatewayValidator.Setup(v => v.ValidateClarification(command)) .ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail> { new ValidationErrorDetail { Field = "OptionFail", ErrorMessage = "needs text" } } } ); ApplyApiClient.Setup(x => x.SubmitGatewayPageAnswer(applicationId, pageId, vm.Status, UserId, Username, It.IsAny <string>())); var result = _controller.ClarifyLegalNamePage(command).Result; ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswer(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never); }
public void post_people_in_control_happy_path() { var command = new SubmitGatewayPageAnswerCommand { Status = SectionReviewStatus.Pass, ApplicationId = ViewModel.ApplicationId, SequenceNumber = ViewModel.SequenceNumber, PageId = ViewModel.PageId }; var result = (RedirectToActionResult)_controller.EvaluatePeopleInControlPage(command).Result; GatewayValidator.Verify(x => x.Validate(command), Times.Once); Assert.AreEqual("ViewApplication", result.ActionName); Assert.AreEqual("RoatpGateway", result.ControllerName); }
public void PeopleInControl_criminal_compliance_clarification_check_has_validation_error(string gatewayPageId) { var clarificationAnswer = "clarification answer"; var model = new CriminalCompliancePageViewModel { ApplicationId = Guid.NewGuid(), ApplyLegalName = "legal name", ComplianceCheckQuestionId = "CC-40", ComplianceCheckAnswer = "No", OptionFailText = null, Status = "Fail", PageId = gatewayPageId, QuestionText = "Question text", Ukprn = "10001234", ClarificationAnswer = clarificationAnswer }; var validationResponse = new ValidationResponse { Errors = new List <ValidationErrorDetail>() { new ValidationErrorDetail { ErrorMessage = "Comments are mandatory", Field = "OptionFailText" } } }; var command = new SubmitGatewayPageAnswerCommand(model); GatewayValidator.Setup(x => x.ValidateClarification(command)).ReturnsAsync(validationResponse); _orchestrator.Setup(x => x.GetCriminalComplianceCheckViewModel(It.Is <GetCriminalComplianceCheckRequest>(y => y.ApplicationId == model.ApplicationId && y.UserName == Username))).ReturnsAsync(model); var result = _controller.ClarifyCriminalCompliancePage(command).GetAwaiter().GetResult(); var viewResult = result as ViewResult; var viewModel = viewResult.Model as CriminalCompliancePageViewModel; viewModel.Should().NotBeNull(); viewModel.ErrorMessages.Count.Should().BeGreaterThan(0); ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswer(model.ApplicationId, gatewayPageId, model.Status, UserId, Username, model.OptionPassText, clarificationAnswer), Times.Never); }
public void post_organisation_status_clarification_path_with_errors() { var applicationId = Guid.NewGuid(); var pageId = "1-20"; var viewModel = new OrganisationStatusViewModel() { Status = SectionReviewStatus.Fail, SourcesCheckedOn = DateTime.Now, ErrorMessages = new List <ValidationErrorDetail>(), ClarificationAnswer = ClarificationAnswer }; viewModel.ApplicationId = applicationId; viewModel.PageId = viewModel.PageId; viewModel.SourcesCheckedOn = DateTime.Now; var command = new SubmitGatewayPageAnswerCommand(viewModel); GatewayValidator.Setup(v => v.ValidateClarification(command)) .ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail> { new ValidationErrorDetail { Field = "OptionFail", ErrorMessage = "needs text" } } } ); _orchestrator.Setup(x => x.GetOrganisationStatusViewModel(It.IsAny <GetOrganisationStatusRequest>())) .ReturnsAsync(viewModel) .Verifiable("view model not returned"); ApplyApiClient.Setup(x => x.SubmitGatewayPageAnswer(applicationId, pageId, viewModel.Status, UserId, Username, It.IsAny <string>())); var result = _controller.ClarifyOrganisationStatus(command).Result; ApplyApiClient.Verify(x => x.SubmitGatewayPageAnswer(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never); _orchestrator.Verify(x => x.GetTradingNameViewModel(It.IsAny <GetTradingNameRequest>()), Times.Never()); }
public async Task <IActionResult> ClarifySubcontractorDeclarationPage(SubmitGatewayPageAnswerCommand command) { var userId = HttpContext.User.UserId(); var username = HttpContext.User.UserDisplayName(); var isClarificationFileUpdate = HttpContext.Request.Form["submitClarificationFile"].Count != 0; var isClarificationForm = HttpContext.Request.Form["submitClarificationForm"].Count != 0; var isRemoveClarificationFile = HttpContext.Request.Form["removeClarificationFile"].Count != 0; var filesToUpload = HttpContext.Request.Form.Files; if (isClarificationFileUpdate) { var validationResponse = GatewayValidator.ValidateClarificationFileUpload(filesToUpload); if (validationResponse.Errors != null && validationResponse.Errors.Count > 0) { var viewModel = await _orchestrator.GetSubcontractorDeclarationViewModel( new GetSubcontractorDeclarationRequest(command.ApplicationId, userId, username)); HydrateSucontractorDeclarationViewModelFromCommand(command, viewModel); viewModel.ErrorMessages = validationResponse.Errors; return(View($"{GatewayViewsLocation}/Clarifications/SubcontractorDeclaration.cshtml", viewModel)); } var newClarificationVm = await ProcessSubcontractorDeclarationuploadAndRebuildViewModel(command, filesToUpload); return(View($"{GatewayViewsLocation}/Clarifications/SubcontractorDeclaration.cshtml", newClarificationVm)); } if (isRemoveClarificationFile) { var newClarificationVm = await RemoveSubcontractorDeclarationuploadAndRebuildViewModel(command); return(View($"{GatewayViewsLocation}/Clarifications/SubcontractorDeclaration.cshtml", newClarificationVm)); } Func <Task <SubcontractorDeclarationViewModel> > viewModelBuilder = () => _orchestrator.GetSubcontractorDeclarationViewModel(new GetSubcontractorDeclarationRequest(command.ApplicationId, userId, username)); return(await ValidateAndUpdateClarificationPageAnswer(command, viewModelBuilder, $"{GatewayViewsLocation}/Clarifications/SubcontractorDeclaration.cshtml")); }