public async Task <IActionResult> GetCollectorValue(Guid id, [FromQuery] string fields,
                                                            [FromHeader(Name = "Accept")] string mediaType)
        {
            if (!TypeHelper.TypeHasProperties <CollectorValueDto>(fields))
            {
                return(BadRequest());
            }

            var retrievedCollectorValue = await _collectorValueService.FindCollectorValueById(id);

            if (retrievedCollectorValue == null)
            {
                return(NotFound());
            }

            var collectorValue       = _mapper.Map <CollectorValueDto>(retrievedCollectorValue);
            var shapedCollectorValue = collectorValue.ShapeData(fields);

            if (mediaType == "application/json+hateoas")
            {
                if (!string.IsNullOrEmpty(fields) && !fields.ToLowerInvariant().Contains("id"))
                {
                    return(BadRequest("Field parameter 'id' is required"));
                }

                var links          = CreateCollectorValueLinks(id, fields);
                var linkedResource = shapedCollectorValue as IDictionary <string, object>;

                linkedResource.Add("links", links);

                return(Ok(linkedResource));
            }
            else
            {
                return(Ok(shapedCollectorValue));
            }
        }
        public async Task FindCollectorValueById_ReturnsCollectorValue_GivenValidId()
        {
            //Arrange
            Guid id = new Guid("5e9cb33b-b12c-4e20-8113-d8e002aeb38d");

            //Act
            var result = await _collectorValueService.FindCollectorValueById(id);

            //Assert
            Assert.NotNull(result);
            Assert.Equal(id, result.Id);
            Assert.Equal(760, result.G4);
        }