public void RefreshTrustees_UpdateTrusteesReturnsFalse_ExceptionThrown() { const int ukprn = 12345678; const string charityNumber = "87654321"; var organisation = new Organisation { OrganisationUkprn = ukprn }; if (int.TryParse(charityNumber, out var charityNumberValue)) { organisation.OrganisationDetails = new OrganisationDetails { CharityNumber = charityNumber, CharityCommissionDetails = new CharityCommissionDetails() }; } _organisationApiClient.Setup(x => x.GetByApplicationId(_applicationId)).ReturnsAsync(organisation); var listOfTrustees = new List <Trustee> { new Trustee { Id = 1234, Name = "Mr A Trustee" }, new Trustee { Id = 1235, Name = "Mr B Trustee" } }; var charity = new Charity { CharityNumber = charityNumber, Trustees = listOfTrustees, Status = "registered" }; _qnaApiClient.Setup(x => x.GetQuestionTag(_applicationId, RoatpWorkflowQuestionTags.UKPRN)).ReturnsAsync(ukprn.ToString()); _qnaApiClient.Setup(x => x.GetQuestionTag(_applicationId, RoatpWorkflowQuestionTags.UKRLPVerificationCharityRegNumber)).ReturnsAsync(charityNumber); _organisationApiClient.Setup(x => x.UpdateTrustees(ukprn.ToString(), listOfTrustees, It.IsAny <Guid>())).ReturnsAsync(false); _applicationApiClient.Setup(x => x.GetApplication(_applicationId)).ReturnsAsync(new Apply { ApplicationStatus = ApplicationStatus.InProgress }); _outerApiClient.Setup(x => x.GetCharityDetails(charityNumberValue)).ReturnsAsync(charity).Verifiable(); var updateResponse = new SetPageAnswersResponse { ValidationPassed = true }; _qnaApiClient.Setup(x => x.UpdatePageAnswers(_applicationId, RoatpWorkflowSequenceIds.YourOrganisation, RoatpWorkflowSectionIds.YourOrganisation.WhosInControl, It.IsAny <string>(), It.IsAny <List <Answer> >())).ReturnsAsync(updateResponse); Assert.ThrowsAsync <InvalidOperationException>(() => _service.RefreshTrustees(_applicationId, _userId)); }
private async Task <SetPageAnswersResponse> UploadFilesToStorage(Guid applicationId, Guid sectionId, string pageId, Page page) { SetPageAnswersResponse response = new SetPageAnswersResponse(null); if (HttpContext.Request.Form.Files.Any() && page != null) { response = await _qnaApiClient.Upload(applicationId, sectionId, pageId, HttpContext.Request.Form.Files); } return(response); }
private void SetAnswerNotUpdated(Page page) { var validationErrors = new List <KeyValuePair <string, string> >(); var updatePageResult = new SetPageAnswersResponse(); foreach (var question in page.Questions) { validationErrors.Add(new KeyValuePair <string, string>(question.QuestionId, "Unable to save as you have not updated your answer")); } updatePageResult.ValidationPassed = false; updatePageResult.ValidationErrors = validationErrors; SetResponseValidationErrors(updatePageResult?.ValidationErrors, page); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JObject jo = JObject.Load(reader); string nextAction = (string)jo["nextAction"]; string nextActionId = (string)jo["nextActionId"]; List <KeyValuePair <string, string> > errors = JsonConvert.DeserializeObject <List <KeyValuePair <string, string> > >(jo["validationErrors"]?.ToString(Formatting.None)); SetPageAnswersResponse result; if (errors == null) { result = new SetPageAnswersResponse(nextAction, nextActionId); } else { result = new SetPageAnswersResponse(errors); } return(result); }
public async Task Then_success_returned_if_uploaded_successfully() { var applicationId = Guid.NewGuid(); var sectionId = Guid.NewGuid(); var pageId = "pageId"; var nextAction = "nextAction"; var nextActionId = "nextActionId"; var response = new SetPageAnswersResponse(nextAction, nextActionId); _mediator.Send(Arg.Any <SubmitPageOfFilesRequest>()).Returns(new HandlerResponse <SetPageAnswersResponse>(response)); _fileController.HttpContext.Request.Form = new FormCollection(new Dictionary <string, StringValues>()); var result = await _fileController.Upload(applicationId, sectionId, pageId); result.Value.Should().BeOfType <SetPageAnswersResponse>(); result.Value.ValidationPassed.Should().BeTrue(); result.Value.NextAction.Should().Be(nextAction); result.Value.NextActionId.Should().Be(nextActionId); }
public async Task RefreshTrustees_InvalidScenarios_ReturnsUnsuccessfulResponse(int?ukprn, string charityNumber, string charityStatus, string applicationStatus, bool setCharityDetailsToNull, bool setTrusteesToEmpty) { var organisation = new Organisation { OrganisationUkprn = ukprn }; if (int.TryParse(charityNumber, out var charityNumberValue)) { organisation.OrganisationDetails = new OrganisationDetails { CharityNumber = charityNumber, CharityCommissionDetails = new CharityCommissionDetails() }; } _organisationApiClient.Setup(x => x.GetByApplicationId(_applicationId)).ReturnsAsync(organisation); var listOfTrustees = new List <Trustee> { new Trustee { Id = 1234, Name = "Mr A Trustee" }, new Trustee { Id = 1235, Name = "Mr B Trustee" } }; var charity = new Charity { CharityNumber = charityNumber, Trustees = listOfTrustees, Status = charityStatus }; if (setCharityDetailsToNull) { charity = null; } else { if (setTrusteesToEmpty) { charity.Trustees = new List <Trustee>(); } } _qnaApiClient.Setup(x => x.GetQuestionTag(_applicationId, RoatpWorkflowQuestionTags.UKPRN)).ReturnsAsync(ukprn.ToString()); _qnaApiClient.Setup(x => x.GetQuestionTag(_applicationId, RoatpWorkflowQuestionTags.UKRLPVerificationCharityRegNumber)).ReturnsAsync(charityNumber); _organisationApiClient.Setup(x => x.UpdateTrustees(ukprn.ToString(), listOfTrustees, It.IsAny <Guid>())).ReturnsAsync(true); _applicationApiClient.Setup(x => x.GetApplication(_applicationId)).ReturnsAsync(new Apply { ApplicationStatus = applicationStatus }); _outerApiClient.Setup(x => x.GetCharityDetails(charityNumberValue)).ReturnsAsync(charity).Verifiable(); var updateResponse = new SetPageAnswersResponse { ValidationPassed = true }; _qnaApiClient.Setup(x => x.UpdatePageAnswers(_applicationId, RoatpWorkflowSequenceIds.YourOrganisation, RoatpWorkflowSectionIds.YourOrganisation.WhosInControl, It.IsAny <string>(), It.IsAny <List <Answer> >())).ReturnsAsync(updateResponse); var result = await _service.RefreshTrustees(_applicationId, _userId); var redirectResult = result as RefreshTrusteesResult; redirectResult.CharityNumber.Should().Be(charityNumber); redirectResult.CharityDetailsNotFound.Should().BeTrue(); _organisationApiClient.Verify(x => x.UpdateTrustees(ukprn.ToString(), listOfTrustees, It.IsAny <Guid>()), Times.Never); _qnaApiClient.Verify(x => x.UpdatePageAnswers(_applicationId, RoatpWorkflowSequenceIds.YourOrganisation, RoatpWorkflowSectionIds.YourOrganisation.WhosInControl, RoatpWorkflowPageIds.WhosInControl.CharityCommissionTrustees, It.IsAny <List <Answer> >()), Times.Never); _qnaApiClient.Verify(x => x.ResetPageAnswersBySequenceAndSectionNumber(_applicationId, RoatpWorkflowSequenceIds.YourOrganisation, RoatpWorkflowSectionIds.YourOrganisation.WhosInControl, RoatpWorkflowPageIds.WhosInControl.CharityCommissionTrustees), Times.Never); _qnaApiClient.Verify(x => x.ResetPageAnswersBySequenceAndSectionNumber(_applicationId, RoatpWorkflowSequenceIds.YourOrganisation, RoatpWorkflowSectionIds.YourOrganisation.WhosInControl, RoatpWorkflowPageIds.WhosInControl.CharityCommissionTrusteesDob), Times.Never); _qnaApiClient.Verify(x => x.ResetPageAnswersBySection(_applicationId, RoatpWorkflowSequenceIds.CriminalComplianceChecks, RoatpWorkflowSectionIds.CriminalComplianceChecks.CheckOnWhosInControl), Times.Never); }