public async Task FindCollectorValues_ReturnsAllCollectorValues() { //Act var result = await _collectorValueService.FindCollectorValues(resourceParameters); //Assert Assert.NotNull(result); Assert.Equal(6, result.Count()); }
public async Task <IActionResult> GetCollectorValues(CollectorValuesResourceParameters resourceParameters, [FromHeader(Name = "Accept")] string mediaType) { if (!PropertyMappingService.ValidMappingExistsFor <CollectorValue>(resourceParameters.OrderBy)) { return(BadRequest()); } if (!TypeHelper.TypeHasProperties <CollectorValueDto> (resourceParameters.Fields)) { return(BadRequest()); } var retrievedCollectorValues = await _collectorValueService.FindCollectorValues(resourceParameters); var collectorValues = _mapper.Map <IEnumerable <CollectorValueDto> >(retrievedCollectorValues); var shapedCollectorValues = collectorValues.ShapeData(resourceParameters.Fields); if (mediaType == "application/json+hateoas") { if (!string.IsNullOrEmpty(resourceParameters.Fields) && !resourceParameters.Fields.ToLowerInvariant().Contains("id")) { return(BadRequest("Field parameter 'id' is required")); } var paginationMetadata = new { totalCount = retrievedCollectorValues.TotalCount, pageSize = retrievedCollectorValues.PageSize, currentPage = retrievedCollectorValues.CurrentPage, totalPages = retrievedCollectorValues.TotalPages, }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(paginationMetadata)); var links = CreateCollectorValuesLinks(resourceParameters, retrievedCollectorValues.HasNext, retrievedCollectorValues.HasPrevious); var linkedCollectorValues = shapedCollectorValues.Select(collectorValue => { var collectorValueAsDictionary = collectorValue as IDictionary <string, object>; var collectorValueLinks = CreateCollectorValueLinks ((Guid)collectorValueAsDictionary["Id"], resourceParameters.Fields); collectorValueAsDictionary.Add("links", collectorValueLinks); return(collectorValueAsDictionary); }); var linkedCollectionResource = new LinkedCollectionResource { Value = linkedCollectorValues, Links = links }; return(Ok(linkedCollectionResource)); } else { var previousPageLink = retrievedCollectorValues.HasPrevious ? CreateCollectorValuesResourceUri(resourceParameters, ResourceUriType.PreviousPage) : null; var nextPageLink = retrievedCollectorValues.HasNext ? CreateCollectorValuesResourceUri(resourceParameters, ResourceUriType.NextPage) : null; var paginationMetadata = new { totalCount = retrievedCollectorValues.TotalCount, pageSize = retrievedCollectorValues.PageSize, currentPage = retrievedCollectorValues.CurrentPage, totalPages = retrievedCollectorValues.TotalPages, previousPageLink, nextPageLink, }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(paginationMetadata)); return(Ok(shapedCollectorValues)); } }