public async void UpdateProductOption_Correct_Product_And_Correct_ProductOptions_Returns_No_Content() { // Arrange Product product = TestProduct; string guid = Guid.NewGuid().ToString(); repository.Setup(r => r.FindProductById(It.IsAny <Guid>())) .ReturnsAsync(product); repository.Setup(r => r.Save()) .ReturnsAsync(true); ProductOption productOption = TestProductOption; string guid2 = Guid.NewGuid().ToString(); repository.Setup(r => r.FindOptionByProductIdAndOptionId(It.IsAny <Guid>(), It.IsAny <Guid>())) .ReturnsAsync(productOption); var productOptionUpdate = new ProductOptionForUpdateDto { Name = "Update Product Option", Description = "Update Product Description" }; // Act var result = await sut.UpdateProductOption(guid, guid2, productOptionUpdate); // Assert Assert.IsType <NoContentResult>(result); }
public async Task <IActionResult> UpdateProductOption(string Id, string optionId, [FromBody] ProductOptionForUpdateDto productOptionForUpdate) { Guid newGuid; var isGuid = Guid.TryParse(Id, out newGuid); if (!isGuid) { return(BadRequest("Invalid Id provided.")); } Guid newOptionGuid; isGuid = Guid.TryParse(optionId, out newOptionGuid); if (!isGuid) { return(BadRequest("Invalid optionId provided.")); } if (productOptionForUpdate == null) { return(BadRequest()); } var product = await repository.FindProductById(newGuid); if (product == null) { return(NotFound("Product not Found")); } var productOption = await repository.FindOptionByProductIdAndOptionId(newGuid, newOptionGuid); if (productOption == null) { return(NotFound("Product Option not Found")); } Mapper.Map(productOptionForUpdate, productOption); if (!await repository.Save()) { logger.LogCritical($"Error when updating Product Option. Product.Id:{product.Id} | Product.Name: {product.Name} | Product.OptionId:{productOption.Id} | Product.OptionName:{productOption.Name}"); return(StatusCode(500, $"Error when updating Product Option. Product.Id:{product.Id} | Product.Name: {product.Name} | Product.OptionId:{productOption.Id} | Product.OptionName:{productOption.Name}")); } return(NoContent()); }