public async Task Application_shows_approved_supporting_page_with_formatted_amount_if_application_approved_and_successful_and_route_is_supporting(int subcontractorLimit, string subcontractLimitFormatted) { var supportingRouteId = Domain.Roatp.ApplicationRoute.SupportingProviderApplicationRoute; var model = new ApplicationSummaryViewModel { ApplicationStatus = ApplicationStatus.Successful, ApplicationRouteId = supportingRouteId.ToString(), SubcontractingLimit = subcontractorLimit }; _outcomeService.Setup(x => x.BuildApplicationSummaryViewModel(_applicationId, It.IsAny <string>())).ReturnsAsync(model); var result = await _controller.ProcessApplicationStatus(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain("ApplicationApprovedSupporting.cshtml"); var modelReturned = viewResult.Model as ApplicationSummaryViewModel; modelReturned.SubcontractingLimit.Should().Be(subcontractorLimit); modelReturned.SubcontractingLimitFormatted.Should().Be(subcontractLimitFormatted); }
public async Task Application_shows_approved_supporting_page_with_formatted_amount_that_matches_oversight_and_appeal_statuses(OversightReviewStatus oversightReviewStatus, string appealStatus, string expectedView, int subcontractorLimit, string subcontractLimitFormatted) { var supportingRouteId = Domain.Roatp.ApplicationRoute.SupportingProviderApplicationRoute; var model = new ApplicationSummaryViewModel { ApplicationStatus = ApplicationStatus.Successful, ApplicationRouteId = supportingRouteId.ToString(), SubcontractingLimit = subcontractorLimit, OversightReviewStatus = oversightReviewStatus, AppealStatus = appealStatus }; _outcomeService.Setup(x => x.BuildApplicationSummaryViewModel(_applicationId, It.IsAny <string>())).ReturnsAsync(model); var result = await _controller.ProcessApplicationStatus(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain(expectedView); var modelReturned = viewResult.Model as ApplicationSummaryViewModel; modelReturned.SubcontractingLimit.Should().Be(subcontractorLimit); modelReturned.SubcontractingLimitFormatted.Should().Be(subcontractLimitFormatted); }
public ApplicationSummaryPage() { InitializeComponent(); ViewModel = IoC.Get<ApplicationSummaryViewModel>(); _manipulator = new ResourceManipulator(Contents); _modsViewSource = _manipulator.Get<CollectionViewSource>("FilteredMods"); _modsViewSource.Filter += ModsViewSourceOnFilter; AnimateOutFinished += Dispose; }
public void TestUrlIsEncoded() { //Arrange Mock <IApplicationProvider> mockApplicationProvider = new Mock <IApplicationProvider>(); Mock <ShareApplicationsViewModelValidator> mockShareApplicationsViewModelValidator = new Mock <ShareApplicationsViewModelValidator>(); Mock <IEncryptionService <AnonymisedApplicationLink> > mockEncryptionService = new Mock <IEncryptionService <AnonymisedApplicationLink> >(); Mock <IDateTimeService> mockDateTimeService = new Mock <IDateTimeService>(); Mock <UrlHelper> mockUrlHelper = new Mock <UrlHelper>(); Mock <ValidationResult> mockValidationResult = new Mock <ValidationResult>(); var applicationGuid = Guid.NewGuid(); string applicantId = "applicantId"; var applicationSummary = new ApplicationSummaryViewModel() { ApplicationId = applicationGuid, ApplicantID = applicantId }; mockValidationResult.Setup(m => m.IsValid).Returns(true); mockShareApplicationsViewModelValidator.Setup(m => m.Validate(It.IsAny <ShareApplicationsViewModel>())) .Returns(mockValidationResult.Object); mockApplicationProvider.Setup(m => m.GetShareApplicationsViewModel(It.IsAny <int>())) .Returns(new ShareApplicationsViewModel() { VacancyType = VacancyType.Apprenticeship, ApplicationSummaries = { applicationSummary } }); //this is the unencrypted version, that we should not use mockEncryptionService.Setup(m => m.Encrypt(It.IsAny <AnonymisedApplicationLink>())).Returns("abcABC+123/123"); //this is the actual url data value mockUrlHelper.Setup(m => m.RouteUrl(It.IsAny <string>(), It.IsAny <RouteValueDictionary>())).Returns("THE_URL"); var parameters = new ShareApplicationsViewModel(); parameters.SelectedApplicationIds = new List <Guid>() { applicationGuid }; parameters.ApplicationSummaries = new List <ApplicationSummaryViewModel>() { applicationSummary }; var mediator = new ApplicationMediator(mockApplicationProvider.Object, mockShareApplicationsViewModelValidator.Object, mockEncryptionService.Object, mockDateTimeService.Object); //Act mediator.ShareApplications(parameters, mockUrlHelper.Object); //Assert mockApplicationProvider.Verify(m => m.ShareApplications(It.IsAny <int>(), It.IsAny <string>(), It.IsAny <Dictionary <string, string> >(), It.IsAny <DateTime>(), It.IsAny <string>()), Times.Once); mockApplicationProvider.Verify(m => m.ShareApplications(It.IsAny <int>(), It.IsAny <string>(), It.Is <Dictionary <string, string> >(d => d[applicantId].Equals("THE_URL")), It.IsAny <DateTime>(), It.IsAny <string>()), Times.Once); mockUrlHelper.Verify(m => m.RouteUrl(It.IsAny <string>(), It.Is <RouteValueDictionary>(rvd => rvd["application"].ToString().Contains("+"))), Times.Never); mockUrlHelper.Verify(m => m.RouteUrl(It.IsAny <string>(), It.Is <RouteValueDictionary>(rvd => rvd["application"].ToString().Contains("/"))), Times.Never); }
private ApplicationSummaryViewModel CreateApplicationSummaryViewModel(ApplicationDetails applicationDetails) { var result = new ApplicationSummaryViewModel { ApplicationId = applicationDetails.ApplicationId, ApplicationReferenceNumber = applicationDetails.ApplicationReferenceNumber, ApplicationSubmittedDate = applicationDetails.ApplicationSubmittedDate, OrganisationName = applicationDetails.OrganisationName, Ukprn = applicationDetails.Ukprn, ProviderRoute = applicationDetails.ProviderRoute, ApplicationStatus = applicationDetails.ApplicationStatus, ApplicationEmailAddress = applicationDetails.ApplicationEmailAddress, AssessorReviewStatus = applicationDetails.AssessorReviewStatus, }; var financialDetailsPass = false; if (applicationDetails.FinancialReviewStatus == FinancialReviewStatus.Exempt) { financialDetailsPass = true; } else { if (applicationDetails.FinancialReviewStatus == FinancialReviewStatus.Pass && (applicationDetails.FinancialGradeAwarded == FinancialApplicationSelectedGrade.Exempt || applicationDetails.FinancialGradeAwarded == FinancialApplicationSelectedGrade.Outstanding || applicationDetails.FinancialGradeAwarded == FinancialApplicationSelectedGrade.Good || applicationDetails.FinancialGradeAwarded == FinancialApplicationSelectedGrade.Satisfactory)) { financialDetailsPass = true; } } if (applicationDetails.GatewayReviewStatus == GatewayReviewStatus.Pass && applicationDetails.ModerationReviewStatus == ModerationReviewStatus.Pass && financialDetailsPass) { result.AssessmentOutcome = AssessmentOutcomeStatus.Passed; } else { result.AssessmentOutcome = AssessmentOutcomeStatus.Failed; } result.ShowAssessmentOutcome = applicationDetails.GatewayReviewStatus == GatewayReviewStatus.Pass; return(result); }
public async Task Application_shows_outcome_in_progress_page_if_application_InProgressOutcome() { var model = new ApplicationSummaryViewModel { ApplicationStatus = ApplicationStatus.InProgressOutcome }; _outcomeService.Setup(x => x.BuildApplicationSummaryViewModel(_applicationId, It.IsAny <string>())).ReturnsAsync(model); var result = await _controller.ProcessApplicationStatus(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain("ApplicationInProgress.cshtml"); }
public async Task Application_shows_feedback_added_page_if_application_status_matches() { var model = new ApplicationSummaryViewModel { ApplicationStatus = ApplicationStatus.FeedbackAdded }; _outcomeService.Setup(x => x.BuildApplicationSummaryViewModel(_applicationId, It.IsAny <string>())).ReturnsAsync(model); var result = await _controller.ProcessApplicationStatus(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain("FeedbackAdded.cshtml"); }
public async Task Application_shows_rejected_page_if_application_rejected_at_gateway() { var model = new ApplicationSummaryViewModel { ApplicationStatus = ApplicationStatus.GatewayAssessed, GatewayReviewStatus = GatewayReviewStatus.Rejected }; _outcomeService.Setup(x => x.BuildApplicationSummaryViewModel(_applicationId, It.IsAny <string>())).ReturnsAsync(model); var result = await _controller.ProcessApplicationStatus(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain("ApplicationRejected.cshtml"); }
public async Task Application_shows_already_active_success_page_if_application_approved_and_oversight_review_status_already_active() { var model = new ApplicationSummaryViewModel { ApplicationStatus = ApplicationStatus.Successful, OversightReviewStatus = OversightReviewStatus.SuccessfulAlreadyActive }; _outcomeService.Setup(x => x.BuildApplicationSummaryViewModel(_applicationId, It.IsAny <string>())).ReturnsAsync(model); var result = await _controller.ProcessApplicationStatus(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain("ApplicationApprovedAlreadyActive.cshtml"); }
public async Task Application_shows_task_list_if_an_application_not_set() { var model = new ApplicationSummaryViewModel { ApplicationStatus = null }; _outcomeService.Setup(x => x.BuildApplicationSummaryViewModel(_applicationId, It.IsAny <string>())).ReturnsAsync(model); var result = await _controller.ProcessApplicationStatus(_applicationId); var redirectResult = result as RedirectToActionResult; redirectResult.Should().NotBeNull(); redirectResult.ActionName.Should().Be("TaskList"); redirectResult.ControllerName.Should().Be("RoatpApplication"); }
public async Task Application_new_invitation_refresh_requested() { var applicationId = Guid.NewGuid(); var viewModel = new ApplicationSummaryViewModel { ApplicationId = applicationId }; var result = await _controller.RequestNewInvitationRefresh(applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.Model.Should().BeEquivalentTo(viewModel); viewResult.ViewName.Should().Contain("RequestNewInvitation.cshtml"); }
public async Task Application_shows_removed_page_if_application_removed_and_oversight_status_is_removed() { var model = new ApplicationSummaryViewModel { ApplicationStatus = ApplicationStatus.Removed, OversightReviewStatus = OversightReviewStatus.Removed }; _outcomeService.Setup(x => x.BuildApplicationSummaryViewModel(_applicationId, It.IsAny <string>())).ReturnsAsync(model); var result = await _controller.ProcessApplicationStatus(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain("ApplicationWithdrawnESFA.cshtml"); }
public async Task Application_new_invitation_requested() { var applicationId = Guid.NewGuid(); var viewModel = new ApplicationSummaryViewModel { ApplicationId = applicationId }; var result = await _controller.RequestNewInvitation(applicationId); var viewResult = result as RedirectToActionResult; viewResult.Should().NotBeNull(); viewResult.ActionName.Should().Be("RequestNewInvitationRefresh"); _applicationApiClient.Verify(x => x.GetApplication(applicationId), Times.Once); _emailService.Verify(x => x.SendRequestToReapplyEmail(It.IsAny <RequestInvitationToReapply>()), Times.Once); }
public async Task Application_shows_active_with_view_appropriate_to_oversight_or_appeal_status(OversightReviewStatus oversightReviewStatus, string appealStatus, string expectedView) { var model = new ApplicationSummaryViewModel { ApplicationStatus = ApplicationStatus.Successful, OversightReviewStatus = oversightReviewStatus, AppealStatus = appealStatus }; _outcomeService.Setup(x => x.BuildApplicationSummaryViewModel(_applicationId, It.IsAny <string>())).ReturnsAsync(model); var result = await _controller.ProcessApplicationStatus(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain(expectedView); }
public async Task Application_shows_removed_page_if_application_removed_and_oversight_status_is_not_removed(OversightReviewStatus oversightStatus) { var model = new ApplicationSummaryViewModel { ApplicationStatus = ApplicationStatus.Removed, OversightReviewStatus = oversightStatus, ApplicationDeterminedDate = DateTime.Today, AppealRequiredByDate = DateTime.Today.AddDays(10) }; _outcomeService.Setup(x => x.BuildApplicationSummaryViewModel(_applicationId, It.IsAny <string>())).ReturnsAsync(model); var result = await _controller.ProcessApplicationStatus(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain("ApplicationSubmitted.cshtml"); }
public async Task Applications_shows_unsuccessful_page_if_application_unsuccessful_and_gateway_fail() { var model = new ApplicationSummaryViewModel { ApplicationStatus = ApplicationStatus.Unsuccessful, GatewayReviewStatus = GatewayReviewStatus.Fail, ApplicationDeterminedDate = DateTime.Today, AppealRequiredByDate = DateTime.Today.AddDays(10) }; _outcomeService.Setup(x => x.BuildApplicationSummaryViewModel(_applicationId, It.IsAny <string>())).ReturnsAsync(model); var result = await _controller.ProcessApplicationStatus(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain("ApplicationUnsuccessful.cshtml"); }
public async Task Application_shows_appeal_successful_page_when_appeal_submitted_and_successful_outcome() { var model = new ApplicationSummaryViewModel { ApplicationStatus = ApplicationStatus.Unsuccessful, OversightReviewStatus = OversightReviewStatus.Unsuccessful, ApplicationDeterminedDate = DateTime.Today, AppealRequiredByDate = DateTime.Today.AddDays(10), AppealStatus = AppealStatus.Successful, IsAppealSubmitted = true }; _outcomeService.Setup(x => x.BuildApplicationSummaryViewModel(_applicationId, It.IsAny <string>())).ReturnsAsync(model); var result = await _controller.ProcessApplicationStatus(_applicationId); var redirectResult = result as RedirectToActionResult; redirectResult.Should().NotBeNull(); redirectResult.ActionName.Should().Be("AppealSuccessful"); redirectResult.ControllerName.Should().Be("RoatpAppeals"); }
public async Task Application_shows_unsuccessful_page_when_appeal_submitted_and_unsuccessful_outcome_and_application_overview_clicked() { var model = new ApplicationSummaryViewModel { ApplicationStatus = ApplicationStatus.Unsuccessful, OversightReviewStatus = OversightReviewStatus.Unsuccessful, ApplicationDeterminedDate = DateTime.Today, AppealRequiredByDate = DateTime.Today.AddDays(10), AppealStatus = AppealStatus.Unsuccessful, IsAppealSubmitted = true }; _outcomeService.Setup(x => x.BuildApplicationSummaryViewModel(_applicationId, It.IsAny <string>())).ReturnsAsync(model); _controller.HttpContext.Request.Headers.Add("Referer", $"http://localhost/application/{_applicationId}/status"); var result = await _controller.ProcessApplicationStatus(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain("ApplicationUnsuccessfulPostGateway.cshtml"); }
public OpenModFolderCommand(ApplicationSummaryViewModel summaryViewModel) { _summaryViewModel = summaryViewModel; _summaryViewModel.PropertyChanged += SummaryViewModelPropertyChanged; }
public async Task BuildApplicationSummaryViewModel_builds_expected_viewModel(string appealStatus, bool appealSubmitted) { var emailAddress = "*****@*****.**"; var ukprn = "12345678"; var organisationName = "org name 1"; var tradingName = "trading name"; var applicationRouteId = 1; var applicationReference = "ABC"; var submittedDate = DateTime.Today.AddDays(-32); var externalComments = "external comments"; var gatewayReviewStatus = GatewayReviewStatus.Pass; var moderationStatus = Domain.Apply.ModerationStatus.Fail; if (string.IsNullOrEmpty(appealStatus)) { _appealsApiClient.Setup(x => x.GetAppeal(_applicationId)) .ReturnsAsync((GetAppealResponse)null); } else { _appealsApiClient.Setup(x => x.GetAppeal(_applicationId)) .ReturnsAsync(new GetAppealResponse { Status = appealStatus, AppealSubmittedDate = DateTime.Today }); } var application = new Apply { ApplicationId = _applicationId, ExternalComments = externalComments, GatewayReviewStatus = gatewayReviewStatus, ModerationStatus = moderationStatus, ApplyData = new ApplyData { ApplyDetails = new ApplyDetails { UKPRN = ukprn, OrganisationName = organisationName, TradingName = tradingName, ProviderRoute = applicationRouteId, ReferenceNumber = applicationReference, ApplicationSubmittedOn = submittedDate } } }; _applicationApiClient.Setup(x => x.GetApplication(_applicationId)).ReturnsAsync(application); var financialReviewDetails = new FinancialReviewDetails { SelectedGrade = FinancialApplicationSelectedGrade.Outstanding, ExternalComments = "financial external comments", Status = FinancialReviewStatus.Pass }; _applicationApiClient.Setup(x => x.GetFinancialReviewDetails(_applicationId)).ReturnsAsync(financialReviewDetails); var expectedModel = new ApplicationSummaryViewModel { ApplicationId = _applicationId, UKPRN = ukprn, OrganisationName = organisationName, EmailAddress = emailAddress, TradingName = tradingName, ApplicationRouteId = applicationRouteId.ToString(), ApplicationReference = applicationReference, SubmittedDate = submittedDate, GatewayExternalComments = externalComments, GatewayReviewStatus = gatewayReviewStatus, ModerationStatus = moderationStatus, FinancialGrade = financialReviewDetails.SelectedGrade, FinancialReviewStatus = financialReviewDetails.Status, FinancialExternalComments = financialReviewDetails.ExternalComments, IsAppealSubmitted = appealSubmitted, AppealStatus = appealStatus }; var returnedModel = await _service.BuildApplicationSummaryViewModel(_applicationId, emailAddress); expectedModel.Should().BeEquivalentTo(returnedModel); }
public ConfigureModCommand(ApplicationSummaryViewModel summaryViewModel) { _summaryViewModel = summaryViewModel; _summaryViewModel.PropertyChanged += SummaryViewModelOnPropertyChanged; }