public async Task ConfirmWithdrawApplication_When_already_withdrawn_returns_to_ViewApplication(string oversightStatus) { var applicationId = Guid.NewGuid(); var viewModel = new RoatpWithdrawApplicationViewModel { ApplicationId = applicationId, ConfirmApplicationAction = HtmlAndCssElements.RadioButtonValueNo, ErrorMessages = new List <ValidationErrorDetail>() }; ApplyApiClient.Setup(x => x.GetApplication(applicationId)).ReturnsAsync(new Apply { ApplicationId = applicationId, ApplicationStatus = ApplicationStatus.Withdrawn }); _withdrawApplicationValidator.Setup(v => v.Validate(viewModel)).ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail>() }); var result = await _controller.ConfirmWithdrawApplication(applicationId, viewModel); var viewResult = result as RedirectToActionResult; Assert.AreEqual(nameof(RoatpGatewayController.ViewApplication), viewResult.ActionName); Assert.AreEqual("RoatpGateway", viewResult.ControllerName); }
public async Task ConfirmRemoveApplication_When_oversight_performed_selected_returns_to_ViewApplication() { var applicationId = Guid.NewGuid(); var viewModel = new RoatpRemoveApplicationViewModel { ApplicationId = applicationId, ConfirmApplicationAction = HtmlAndCssElements.RadioButtonValueNo }; ApplyApiClient.Setup(x => x.GetApplication(applicationId)).ReturnsAsync(new Apply { ApplicationId = applicationId }); ApplyApiClient.Setup(x => x.GetOversightDetails(applicationId)).ReturnsAsync(() => new ApplicationOversightDetails { OversightStatus = OversightReviewStatus.Successful }); _removeApplicationValidator.Setup(v => v.Validate(viewModel)).ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail>() }); var result = await _controller.ConfirmRemoveApplication(applicationId, viewModel); var viewResult = result as RedirectToActionResult; Assert.AreEqual(nameof(RoatpGatewayController.ViewApplication), viewResult.ActionName); Assert.AreEqual("RoatpGateway", viewResult.ControllerName); }
public async Task ConfirmWithdrawApplication_Yes_selected_And_fails_validation_returns_back_to_View() { var applicationId = Guid.NewGuid(); var viewModel = new RoatpWithdrawApplicationViewModel { ApplicationId = applicationId, ConfirmApplicationAction = HtmlAndCssElements.RadioButtonValueYes }; var validationErrors = new List <ValidationErrorDetail> { new ValidationErrorDetail() }; ApplyApiClient.Setup(x => x.GetApplication(applicationId)).ReturnsAsync(new Apply { ApplicationId = applicationId }); ApplyApiClient.Setup(x => x.GetOversightDetails(applicationId)).ReturnsAsync(() => new ApplicationOversightDetails { OversightStatus = OversightReviewStatus.None }); _withdrawApplicationValidator.Setup(v => v.Validate(viewModel)).ReturnsAsync(new ValidationResponse { Errors = validationErrors }); var result = await _controller.ConfirmWithdrawApplication(applicationId, viewModel); var viewResult = result as ViewResult; Assert.IsTrue(viewResult.ViewName.EndsWith("ConfirmWithdrawApplication.cshtml")); }
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_address_happy_path() { var applicationId = Guid.NewGuid(); var pageId = "Address"; var vm = new AddressCheckViewModel { Status = SectionReviewStatus.Pass, SourcesCheckedOn = DateTime.Now, ErrorMessages = new List <ValidationErrorDetail>() }; vm.SourcesCheckedOn = DateTime.Now; var command = new SubmitGatewayPageAnswerCommand(vm); var pageData = JsonConvert.SerializeObject(vm); ApplyApiClient.Setup(x => x.SubmitGatewayPageAnswer(applicationId, pageId, vm.Status, UserId, Username, It.IsAny <string>())); var result = _controller.EvaluateAddressPage(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>(), null), Times.Once); _orchestrator.Verify(x => x.GetAddressViewModel(It.IsAny <GetAddressRequest>()), 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 async Task ConfirmOutcome_evaluation_result_is_on_error() { var applicationId = Guid.NewGuid(); ApplyApiClient.Setup(x => x.GetApplication(applicationId)).ReturnsAsync(new Apply { ApplicationId = applicationId, ApplyData = new ApplyData { ApplyDetails = new ApplyDetails { } } }); var viewModel = new RoatpGatewayApplicationViewModel { ApplicationId = applicationId, GatewayReviewStatus = GatewayReviewStatus.InProgress, ErrorMessages = new List <ValidationErrorDetail>() }; _validator.Setup(v => v.Validate(viewModel)) .ReturnsAsync(new ValidationResponse { Errors = new List <ValidationErrorDetail> { new ValidationErrorDetail { Field = "GatewayReviewStatus", ErrorMessage = "Select what you want to do" } } }); var expectedViewModelWithErrors = new RoatpGatewayApplicationViewModel { ApplicationId = applicationId, GatewayReviewStatus = GatewayReviewStatus.New, ErrorMessages = new List <ValidationErrorDetail> { new ValidationErrorDetail { Field = "GatewayReviewStatus", ErrorMessage = "Select what you want to do" } } }; _orchestrator.Setup(x => x.GetConfirmOverviewViewModel(It.Is <GetApplicationOverviewRequest>(y => y.ApplicationId == applicationId && y.UserName == Username))).ReturnsAsync(expectedViewModelWithErrors); var result = await _controller.EvaluateConfirmOutcome(viewModel); var viewResult = result as ViewResult; Assert.AreSame(expectedViewModelWithErrors, viewResult.Model); }
public async Task AboutToAskForClarification_with_yes_then_redirected_to_successful_page() { var applicationId = Guid.NewGuid(); _orchestrator.Setup(x => x.GetClarificationViewModel(It.IsAny <GetApplicationClarificationsRequest>())) .ReturnsAsync(new RoatpGatewayClarificationsViewModel()); ApplyApiClient.Setup(x => x.UpdateGatewayReviewStatusAsClarification(applicationId, It.IsAny <string>(), It.IsAny <string>())); var confirmAskForClarification = "Yes"; var result = await _controller.AboutToAskForClarification(applicationId, confirmAskForClarification); var viewResult = result as ViewResult; Assert.IsTrue(viewResult.ViewName.Contains("ConfirmApplicationClarification.cshtml")); ApplyApiClient.Verify(x => x.UpdateGatewayReviewStatusAsClarification(applicationId, It.IsAny <string>(), It.IsAny <string>()), Times.Once); }
public async Task ConfirmOutcome_model_is_returned() { var applicationId = Guid.NewGuid(); var expectedViewModel = new RoatpGatewayApplicationViewModel { ReadyToConfirm = true }; ApplyApiClient.Setup(x => x.GetApplication(applicationId)).ReturnsAsync(new Apply { ApplicationId = applicationId }); _orchestrator.Setup(x => x.GetConfirmOverviewViewModel(It.Is <GetApplicationOverviewRequest>(y => y.ApplicationId == applicationId && y.UserName == Username))).ReturnsAsync(expectedViewModel); var result = await _controller.ConfirmOutcome(applicationId, GatewayReviewStatus.Pass, null, null, 0); var viewResult = result as ViewResult; Assert.AreSame(expectedViewModel, viewResult.Model); }
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 ClosedApplications_ViewModel_Has_Correct_Application_Counts() { ApplyApiClient.Setup(x => x.GetClosedGatewayApplications(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(new List <RoatpApplicationSummaryItem>()); ApplyApiClient.Setup(x => x.GetApplicationCounts(It.IsAny <string>())).ReturnsAsync(new GetGatewayApplicationCountsResponse { NewApplicationsCount = 1, InProgressApplicationsCount = 2, ClosedApplicationsCount = 3 }); var result = await _controller.ClosedApplications(null, "", "", 1); var viewResult = result as ViewResult; var resultViewModel = viewResult.Model as RoatpGatewayDashboardViewModel; Assert.AreEqual(1, resultViewModel.ApplicationCounts.NewApplicationsCount); Assert.AreEqual(2, resultViewModel.ApplicationCounts.InProgressApplicationsCount); Assert.AreEqual(3, resultViewModel.ApplicationCounts.ClosedApplicationsCount); }
public async Task ConfirmWithdrawApplication_Yes_selected_And_passed_validation_performs_Application_Withdrawal() { var applicationId = Guid.NewGuid(); var application = new Apply { ApplicationId = applicationId, ApplyData = new ApplyData { ApplyDetails = new ApplyDetails() } }; var viewModel = new RoatpWithdrawApplicationViewModel { ApplicationId = applicationId, ConfirmApplicationAction = HtmlAndCssElements.RadioButtonValueYes, OptionYesText = "Comments" }; var validationErrors = new List <ValidationErrorDetail>(); ApplyApiClient.Setup(x => x.GetApplication(applicationId)).ReturnsAsync(application); ApplyApiClient.Setup(x => x.GetOversightDetails(applicationId)).ReturnsAsync(() => new ApplicationOversightDetails { OversightStatus = OversightReviewStatus.None }); _withdrawApplicationValidator.Setup(v => v.Validate(viewModel)).ReturnsAsync(new ValidationResponse { Errors = validationErrors }); var result = await _controller.ConfirmWithdrawApplication(applicationId, viewModel); var viewResult = result as ViewResult; Assert.IsTrue(viewResult.ViewName.EndsWith("ApplicationWithdrawn.cshtml")); ApplyApiClient.Verify(x => x.WithdrawApplication(viewModel.ApplicationId, viewModel.OptionYesText, It.IsAny <string>(), It.IsAny <string>()), Times.Once); }