public async Task <IActionResult> GetCoin(Guid id, [FromQuery] string fields, [FromHeader(Name = "Accept")] string mediaType) { if (!TypeHelper.TypeHasProperties <CoinDto>(fields)) { return(BadRequest()); } var retrievedCoin = await _coinService.FindCoinById(id); if (retrievedCoin == null) { return(NotFound()); } var coin = _mapper.Map <CoinDto>(retrievedCoin); var shapedCoin = coin.ShapeData(fields); if (mediaType == "application/json+hateoas") { if (!string.IsNullOrEmpty(fields) && !fields.ToLowerInvariant().Contains("id")) { return(BadRequest("Field parameter 'id' is required")); } var links = CreateCoinLinks(id, fields); var linkedResource = shapedCoin as IDictionary <string, object>; linkedResource.Add("links", links); return(Ok(linkedResource)); } else { return(Ok(shapedCoin)); } }
public async Task FindCoinById_ReturnsCoin_GivenValidCoinId() { //Arrange Guid id = new Guid("3a7fd6a5-d654-4647-8374-eba27001b0d3"); //Act var result = await _coinService.FindCoinById(id); //Assert Assert.NotNull(result); Assert.Equal(id, result.Id); Assert.Equal("Pesos", result.Type); }