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));
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
            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);
            }
示例#5
0
        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);
        }