Пример #1
0
        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);
        }
Пример #2
0
        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());
        }