public async Task <IActionResult> GetBanknote(Guid id, [FromQuery] string fields, [FromHeader(Name = "Accept")] string mediaType) { if (!TypeHelper.TypeHasProperties <BanknoteDto>(fields)) { return(BadRequest()); } var retrievedBanknote = await _banknoteService.FindBanknoteById(id); if (retrievedBanknote == null) { return(NotFound()); } var banknote = _mapper.Map <BanknoteDto>(retrievedBanknote); var shapedBanknote = banknote.ShapeData(fields); if (mediaType == "application/json+hateoas") { if (!string.IsNullOrEmpty(fields) && !fields.ToLowerInvariant().Contains("id")) { return(BadRequest("Field parameter 'id' is required")); } var links = CreateBanknoteLinks(id, fields); var linkedResource = shapedBanknote as IDictionary <string, object>; linkedResource.Add("links", links); return(Ok(linkedResource)); } else { return(Ok(shapedBanknote)); } }
public async Task FindBanknoteById_ReturnsBanknote_GivenValidBanknoteId() { //Arrange Guid id = new Guid("3da0c34f-dbfb-41a3-801f-97b7f4cdde89"); //Act var result = await _banknoteService.FindBanknoteById(id); //Assert Assert.NotNull(result); Assert.Equal(id, result.Id); Assert.Equal("Pounds", result.Type); }