public void Before_each_test() { _roatpOrganisationApiClient = new Mock <IRoatpOrganisationApiClient>(); _applicationApplyApiClient = new Mock <IRoatpApplicationApiClient>(); _clarificationValidator = new Mock <IRoatpFinancialClarificationViewModelValidator>(); _qnaApiClient = new Mock <IQnaApiClient>(); _csvExportService = new Mock <ICsvExportService>(); _financialReviewDetails = new FinancialReviewDetails(); MockHttpContextAccessor = SetupMockedHttpContextAccessor(); _controller = new RoatpFinancialController(_roatpOrganisationApiClient.Object, _applicationApplyApiClient.Object, _qnaApiClient.Object, MockHttpContextAccessor.Object, _clarificationValidator.Object, _csvExportService.Object) { ControllerContext = MockedControllerContext.Setup() }; }
public void when_validation_errors_occur_page_refreshes_with_validation_messages() { var buttonPressed = "submitClarificationFiles"; _applicationApplyApiClient.Setup(x => x.GetRoatpSequences()).ReturnsAsync(new List <RoatpSequence>()); _qnaApiClient.Setup(x => x.GetSectionBySectionNo(_applicationId, RoatpQnaConstants.RoatpSequences.YourOrganisation, RoatpQnaConstants.RoatpSections.YourOrganisation.OrganisationDetails)) .ReturnsAsync(new Section { ApplicationId = _applicationId, QnAData = new QnAData() }); _qnaApiClient.Setup(x => x.GetSectionBySectionNo(_applicationId, RoatpQnaConstants.RoatpSequences.YourOrganisation, RoatpQnaConstants.RoatpSections.YourOrganisation.DescribeYourOrganisation)) .ReturnsAsync(new Section { ApplicationId = _applicationId, QnAData = new QnAData() }); _controller = new RoatpFinancialController(_roatpOrganisationApiClient.Object, _applicationApplyApiClient.Object, _qnaApiClient.Object, _searchTermValidator.Object, _clarificationValidator.Object, Mock.Of <ICsvExportService>()) { ControllerContext = MockedControllerContext.Setup(buttonPressed) }; _clarificationValidator.Setup(x => x.Validate(It.IsAny <RoatpFinancialClarificationViewModel>(), It.IsAny <bool>(), It.IsAny <bool>())) .Returns(new ValidationResponse { Errors = new List <ValidationErrorDetail> { new ValidationErrorDetail { ErrorMessage = "error message", Field = "errorField" } } }); _applicationApplyApiClient.Setup(x => x.GetApplication(It.IsAny <Guid>())).ReturnsAsync( new RoatpApply { ApplicationId = _applicationId, ApplyData = new RoatpApplyData { ApplyDetails = new RoatpApplyDetails { OrganisationName = "org name", UKPRN = "12344321", ReferenceNumber = "3443", ProviderRouteName = "main", ApplicationSubmittedOn = DateTime.Today }, Sequences = new List <RoatpApplySequence> { new RoatpApplySequence { SequenceNo = 5, NotRequired = true } } } }); _applicationApplyApiClient.Setup(x => x.UploadClarificationFile(_applicationId, It.IsAny <string>(), It.IsAny <IFormFileCollection>())) .ReturnsAsync(true); _financialReviewDetails = new FinancialReviewDetails { GradedBy = MockHttpContextAccessor.Name, GradedOn = DateTime.UtcNow, SelectedGrade = FinancialApplicationSelectedGrade.Good, FinancialDueDate = DateTime.Today.AddDays(5), Comments = "comments", ClarificationResponse = "clarification response", ClarificationRequestedOn = DateTime.UtcNow }; _applicationApplyApiClient.Setup(x => x.GetFinancialReviewDetails(_applicationId)).ReturnsAsync(_financialReviewDetails); var vm = new RoatpFinancialClarificationViewModel { ApplicationId = _applicationId, FinancialReviewDetails = _financialReviewDetails, OutstandingFinancialDueDate = new FinancialDueDate { Day = "1", Month = "1", Year = (DateTime.Now.Year + 1).ToString() }, ClarificationResponse = "clarification response", ClarificationComments = "clarification comments", FilesToUpload = null }; var result = _controller.SubmitClarification(_applicationId, vm).Result as ViewResult; Assert.IsTrue(result.ViewName.Contains("Application_Clarification.cshtml")); var resultModel = result.Model as RoatpFinancialClarificationViewModel; Assert.AreEqual(1, resultModel.ErrorMessages.Count); }
public void When_clarification_file_is_removed_and_page_is_refreshed_with_filename_removed_from_model() { var buttonPressed = "removeClarificationFile"; _applicationApplyApiClient.Setup(x => x.GetRoatpSequences()).ReturnsAsync(new List <RoatpSequence>()); _qnaApiClient.Setup(x => x.GetSectionBySectionNo(_applicationId, RoatpQnaConstants.RoatpSequences.YourOrganisation, RoatpQnaConstants.RoatpSections.YourOrganisation.OrganisationDetails)) .ReturnsAsync(new Section { ApplicationId = _applicationId, QnAData = new QnAData() }); _qnaApiClient.Setup(x => x.GetSectionBySectionNo(_applicationId, RoatpQnaConstants.RoatpSequences.YourOrganisation, RoatpQnaConstants.RoatpSections.YourOrganisation.DescribeYourOrganisation)) .ReturnsAsync(new Section { ApplicationId = _applicationId, QnAData = new QnAData() }); _controller = new RoatpFinancialController(_roatpOrganisationApiClient.Object, _applicationApplyApiClient.Object, _qnaApiClient.Object, MockHttpContextAccessor.Object, _clarificationValidator.Object, Mock.Of <ICsvExportService>()) { ControllerContext = MockedControllerContext.Setup(buttonPressed) }; _clarificationValidator.Setup(x => x.Validate(It.IsAny <RoatpFinancialClarificationViewModel>(), It.IsAny <bool>(), It.IsAny <bool>())) .Returns(new ValidationResponse { }); var fileToBeRemoved = "file.pdf"; _financialReviewDetails = new FinancialReviewDetails { GradedBy = MockHttpContextAccessor.Name, GradedDateTime = DateTime.UtcNow, SelectedGrade = FinancialApplicationSelectedGrade.Good, FinancialDueDate = DateTime.Today.AddDays(5), Comments = "comments", ClarificationResponse = "clarification response", ClarificationRequestedOn = DateTime.UtcNow, ClarificationFiles = new List <ClarificationFile> { new ClarificationFile { Filename = fileToBeRemoved }, new ClarificationFile { Filename = "second.pdf" } } }; _applicationApplyApiClient.Setup(x => x.GetApplication(It.IsAny <Guid>())).ReturnsAsync( new RoatpApply { ApplicationId = _applicationId, ApplyData = new RoatpApplyData { ApplyDetails = new RoatpApplyDetails { OrganisationName = "org name", UKPRN = "12344321", ReferenceNumber = "3443", ProviderRouteName = "main", ApplicationSubmittedOn = DateTime.Today }, Sequences = new List <RoatpApplySequence> { new RoatpApplySequence { SequenceNo = 5, NotRequired = true } } }, FinancialGrade = _financialReviewDetails }); _applicationApplyApiClient.Setup(x => x.RemoveClarificationFile(_applicationId, It.IsAny <string>(), fileToBeRemoved)) .ReturnsAsync(true); var vm = new RoatpFinancialClarificationViewModel { ApplicationId = _applicationId, FinancialReviewDetails = _financialReviewDetails, OutstandingFinancialDueDate = new FinancialDueDate { Day = "1", Month = "1", Year = (DateTime.Now.Year + 1).ToString() }, ClarificationResponse = "clarification response", ClarificationComments = "clarification comments", FilesToUpload = null }; var result = _controller.SubmitClarification(_applicationId, vm).Result as ViewResult; Assert.IsTrue(result.ViewName.Contains("Application_Clarification.cshtml")); var resultModel = result.Model as RoatpFinancialClarificationViewModel; Assert.IsTrue(resultModel.FinancialReviewDetails.ClarificationFiles.Count == 1); Assert.IsTrue(resultModel.FinancialReviewDetails.ClarificationFiles[0].Filename == "second.pdf"); }