public async Task UpdateBanknote_ReturnsUnprocessableEntityObjectResponse_GivenInvalidBanknote()
        {
            //Arrange
            BanknoteUpdateDto banknote = new BanknoteUpdateDto();

            _controller.ModelState.AddModelError("Type", "Required");

            //Act
            var response = await _controller.UpdateBanknote(Guid.Empty, banknote);

            //Assert
            Assert.IsType <UnprocessableEntityObjectResult>(response);
        }
        public async Task <IActionResult> UpdateBanknote(Guid id, [FromBody] BanknoteUpdateDto banknote)
        {
            if (banknote == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(new UnprocessableEntityObjectResult(ModelState));
            }

            if (!await _countryService.CountryExists(banknote.CountryId))
            {
                return(BadRequest());
            }

            var retrievedBanknote = await _banknoteService.FindBanknoteById(id);

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

            var collectorValue         = _mapper.Map <CollectorValue>(banknote.CollectorValue);
            var existingCollectorValue = await _collectorValueService.FindCollectorValueByValues(collectorValue);

            retrievedBanknote.CollectorValueId = existingCollectorValue == null?Guid.NewGuid() : existingCollectorValue.Id;

            retrievedBanknote.CollectorValue = collectorValue;

            _mapper.Map(banknote, retrievedBanknote);
            _banknoteService.UpdateBanknote(retrievedBanknote);

            if (!await _banknoteService.Save())
            {
                throw new Exception($"Updating banknote {id} failed on save.");
            }

            return(NoContent());
        }