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

            var retrievedCondition = await _conditionService.FindConditionById(id);

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

            var condition       = _mapper.Map <ConditionDto>(retrievedCondition);
            var shapedCondition = condition.ShapeData(fields);

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

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

                linkedResource.Add("links", links);

                return(Ok(linkedResource));
            }
            else
            {
                return(Ok(shapedCondition));
            }
        }
        public async Task FindConditionById_ReturnsCondition_GivenValidId()
        {
            //Arrange
            Guid id = new Guid("e55b0420-f390-41e6-9100-212b611bbca7");

            //Act
            var result = await _conditionService.FindConditionById(id);

            //Assert
            Assert.NotNull(result);
            Assert.Equal(id, result.Id);
            Assert.Equal("XF45", result.Grade);
        }