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