public async Task <IActionResult> CreateBanknote([FromBody] BanknoteCreationDto banknote, [FromHeader(Name = "Accept")] string mediaType) { if (banknote == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(new UnprocessableEntityObjectResult(ModelState)); } if (!await _countryService.CountryExists(banknote.CountryId)) { return(BadRequest()); } var newBanknote = _mapper.Map <Banknote>(banknote); var existingCollectorValue = await _collectorValueService.FindCollectorValueByValues(newBanknote.CollectorValue); newBanknote.CollectorValueId = existingCollectorValue == null?Guid.NewGuid() : existingCollectorValue.Id; await _banknoteService.CreateBanknote(newBanknote); if (!await _banknoteService.Save()) { throw new Exception("Creating a banknote failed on save."); } var returnedBanknote = _mapper.Map <BanknoteDto>(newBanknote); if (mediaType == "application/json+hateoas") { var links = CreateBanknoteLinks(returnedBanknote.Id, null); var linkedResource = returnedBanknote.ShapeData(null) as IDictionary <string, object>; linkedResource.Add("links", links); return(CreatedAtRoute("GetBanknote", new { id = returnedBanknote.Id }, linkedResource)); } else { return(CreatedAtRoute("GetBanknote", new { id = returnedBanknote.Id }, returnedBanknote)); } }
public async Task CreateBanknote_CreatesNewBanknote() { //Arrange Guid id = new Guid("86dbe5cf-df75-41a5-af56-6e2f2de181a4"); Banknote newBanknote = new Banknote { Id = id, Type = "Euros", CountryId = new Guid("1b38bfce-567c-4d49-9dd2-e0fbef480367"), CollectorValueId = new Guid("5e9cb33b-b12c-4e20-8113-d8e002aeb38d") }; //Act await _banknoteService.CreateBanknote(newBanknote); await _unitOfWork.Save(); //Assert Assert.Equal(7, (await _banknoteService.FindBanknotes(resourceParameters)).Count()); Assert.Equal("Euros", (await _banknoteService.FindBanknoteById(id)).Type); }