Ejemplo n.º 1
0
        public async Task GetAllActiveCitizensSuccess()
        {
            //Arrange
            int pageNumber          = 2;
            var helperHttpClientMoq = new Mock <ICitizenHttpClientHelper>();
            var context             = GetContext();
            var configurationMoq    = new Mock <IConfiguration>();

            var citizenDataResponse = new List <CitizenDataResponseModel>()
            {
                new CitizenDataResponseModel(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(),
                                             It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())
            };

            var citizenList = new CitizenList(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>(), citizenDataResponse);

            helperHttpClientMoq.Setup(x => x.GetAllActiveCitizenDataFromMomentumCoreAsync("/search", pageNumber))
            .Returns(Task.FromResult(new ResultOrHttpError <CitizenList, Error>(citizenList)));

            var citizenService = new CitizenService(helperHttpClientMoq.Object, configurationMoq.Object, context.Object);

            //Act
            var result = await citizenService.GetAllActiveCitizensAsync(pageNumber).ConfigureAwait(false);

            //Asert
            result.Should().NotBeNull();
            result.IsError.Should().BeFalse();
            result.Result.Should().BeEquivalentTo(citizenList);
        }
Ejemplo n.º 2
0
        public async Task <ResultOrHttpError <CitizenList, Error> > GetAllActiveCitizenDataFromMomentumCoreAsync(string path, int pageNumber)
        {
            List <JToken> totalRecords   = new List <JToken>();
            List <string> JsonStringList = new List <string>();

            var pageNo = pageNumber;
            var size   = 100;
            var skip   = (pageNo - 1) * size;

            var queryStringParams = $"term=Citizen&size={size}&skip={skip}&isActive=true";
            var response          = await _meaClient.GetAsync(path + "?" + queryStringParams).ConfigureAwait(false);

            if (response.IsError)
            {
                return(new ResultOrHttpError <CitizenList, Error>(response.Error, response.StatusCode.Value));
            }

            var content = response.Result;

            int.TryParse(JObject.Parse(content)["totalCount"].ToString(), out int totalCount);

            if (pageNumber > (totalCount / size) + 1)
            {
                var error = new Error(_correlationId, new[] { "No Records are available for entered page number" }, "MEA");
                Log.ForContext("CorrelationId", _correlationId)
                .ForContext("ClientId", _clientId)
                .Error("No Records are available for entered page number");
                return(new ResultOrHttpError <CitizenList, Error>(error, HttpStatusCode.BadRequest));
            }

            var jsonArray = JArray.Parse(JObject.Parse(content)["results"].ToString());

            totalRecords.AddRange(jsonArray.Children());

            foreach (var item in totalRecords)
            {
                var jsonToReturn = JsonConvert.SerializeObject(new
                {
                    citizenId            = item["id"],
                    displayName          = item["name"],
                    givenName            = (string)null,
                    middleName           = (string)null,
                    initials             = (string)null,
                    address              = (string)null,
                    number               = (string)null,
                    caseworkerIdentifier = (string)null,
                    description          = item["description"],
                    isBookable           = true,
                    isActive             = true
                });
                JsonStringList.Add(jsonToReturn);
            }

            var totalPages = (totalCount / size) + 1;

            var data = JsonStringList.Select(x => JsonConvert.DeserializeObject <CitizenDataResponseModel>(x));

            var citizenList = new CitizenList(totalPages, totalCount, pageNo, data.ToList());

            return(new ResultOrHttpError <CitizenList, Error>(citizenList));
        }