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); }
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)); }