public async Task AppealSubmitted_shows_Successful_Gateway_Fail_page_if_appeal_deemed_Successful_and_Gateway_Fail(string appealStatus) { var model = new AppealSuccessfulViewModel { ApplicationId = _applicationId, }; var appeal = new GetAppealResponse { Status = appealStatus, ApplicationId = model.ApplicationId, }; _appealsApiClient.Setup(x => x.GetAppeal(_applicationId)).ReturnsAsync(appeal); var application = new Apply { GatewayReviewStatus = GatewayReviewStatus.Fail, ApplicationStatus = ApplicationStatus.AppealSuccessful }; _applicationApiClient.Setup(x => x.GetApplication(_applicationId)).ReturnsAsync(application); var result = await _controller.AppealSuccessful(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain("~/Views/Appeals/AppealSuccessfulGatewayFail.cshtml"); viewResult.Model.Should().BeEquivalentTo(model); }
public async Task <IActionResult> AppealSuccessful(Guid applicationId) { var appeal = await _appealsApiClient.GetAppeal(applicationId); if (appeal is null) { return(RedirectToAction("ProcessApplicationStatus", "RoatpOverallOutcome", new { applicationId })); } if (appeal.Status != AppealStatus.Successful && appeal.Status != AppealStatus.SuccessfulFitnessForFunding && appeal.Status != AppealStatus.SuccessfulAlreadyActive) { return(RedirectToAction("ProcessApplicationStatus", "RoatpOverallOutcome", new { applicationId })); } var application = await _applicationApiClient.GetApplication(applicationId); var model = new AppealSuccessfulViewModel { ApplicationId = applicationId, AppealSubmittedDate = appeal.AppealSubmittedDate ?? null, AppealDeterminedDate = appeal.AppealDeterminedDate ?? null, AppealedOnEvidenceSubmitted = !string.IsNullOrEmpty(appeal.HowFailedOnEvidenceSubmitted), AppealedOnPolicyOrProcesses = !string.IsNullOrEmpty(appeal.HowFailedOnPolicyOrProcesses), ExternalComments = appeal.ExternalComments, SubcontractingLimit = application?.ApplyData?.GatewayReviewDetails?.SubcontractingLimit }; var isGatewayFail = application?.GatewayReviewStatus == GatewayReviewStatus.Fail; if (isGatewayFail && application?.ApplicationStatus == ApplicationStatus.AppealSuccessful) { switch (appeal.Status) { case AppealStatus.Successful: case AppealStatus.SuccessfulAlreadyActive: case AppealStatus.SuccessfulFitnessForFunding: return(View("~/Views/Appeals/AppealSuccessfulGatewayFail.cshtml", model)); } } var isSupporting = application?.ApplyData?.ApplyDetails?.ProviderRoute.ToString() == Domain.Roatp.ApplicationRoute.SupportingProviderApplicationRoute.ToString(); switch (appeal.Status) { case AppealStatus.Successful: return(View(isSupporting ? "~/Views/Appeals/AppealSuccessfulSupporting.cshtml" : "~/Views/Appeals/AppealSuccessful.cshtml", model)); case AppealStatus.SuccessfulAlreadyActive: return(View(isSupporting ? "~/Views/Appeals/AppealSuccessfulSupportingAlreadyActive.cshtml" : "~/Views/Appeals/AppealSuccessfulAlreadyActive.cshtml", model)); case AppealStatus.SuccessfulFitnessForFunding: return(View(isSupporting ? "~/Views/Appeals/AppealSuccessfulSupportingFitnessForFunding.cshtml" : "~/Views/Appeals/AppealSuccessfulFitnessForFunding.cshtml", model)); } return(View("~/Views/Appeals/AppealSuccessful.cshtml", model)); }
public async Task AppealSubmitted_shows_Successful_page_if_appeal_deemed_Successful(string appealStatus, bool isSupporting, string expectedPage) { var model = new AppealSuccessfulViewModel { ApplicationId = _applicationId, AppealSubmittedDate = DateTime.UtcNow.AddDays(-1), AppealDeterminedDate = DateTime.UtcNow, AppealedOnEvidenceSubmitted = true, AppealedOnPolicyOrProcesses = true, ExternalComments = "You were successful" }; var appeal = new GetAppealResponse { Status = appealStatus, ApplicationId = model.ApplicationId, AppealSubmittedDate = model.AppealSubmittedDate, AppealDeterminedDate = model.AppealDeterminedDate, HowFailedOnEvidenceSubmitted = "valid input", HowFailedOnPolicyOrProcesses = "valid input", ExternalComments = model.ExternalComments }; _appealsApiClient.Setup(x => x.GetAppeal(_applicationId)).ReturnsAsync(appeal); var route = Domain.Roatp.ApplicationRoute.MainProviderApplicationRoute; if (isSupporting) { route = Domain.Roatp.ApplicationRoute.SupportingProviderApplicationRoute; } var application = new Apply { ApplyData = new ApplyData { ApplyDetails = new ApplyDetails { ProviderRoute = route } } }; _applicationApiClient.Setup(x => x.GetApplication(_applicationId)).ReturnsAsync(application); var result = await _controller.AppealSuccessful(_applicationId); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain(expectedPage); viewResult.Model.Should().BeEquivalentTo(model); }