public void AddProductToShoppingCart_Should_Return_False_If_Product_Not_Available_In_Stock() { //Act var request = new AddToShoppingCartRequest { ProductId = ObjectId.GenerateNewId().ToString(), Amount = 2 }; var shoppingCartRepository = new Mock <IShoppingCartRepository>(); var productRepositoryMock = new Mock <IProductRepository>(); var service = new ShoppingCartService(productRepositoryMock.Object, shoppingCartRepository.Object); // Act productRepositoryMock.Setup(x => x.GetByProductId(request.ProductId)).Returns(new Product() { Id = request.ProductId, Name = "Terrarium", Price = 4.00, AvailableQuantity = 0 }); var response = service.AddProductToShoppingCart(request); // Assert Assert.IsFalse(Convert.ToBoolean(response)); }
public IActionResult AddProductToShoppingCart([FromBody] AddToShoppingCartRequest request) { if (request == null) { return(BadRequest("product can not be null!")); } if (string.IsNullOrEmpty(request.ProductId)) { return(BadRequest("product id should be greater than zero!")); } var res = ShoppingCartService.AddProductToShoppingCart(request); return(Ok(res)); }
public void AddProductToShoppingCart_Should_Return_False_If_Product_Is_Null() { //Act var request = new AddToShoppingCartRequest { ProductId = ObjectId.GenerateNewId().ToString(), Amount = 2 }; var shoppingCartRepository = new Mock <IShoppingCartRepository>(); var productRepositoryMock = new Mock <IProductRepository>(); var service = new ShoppingCartService(productRepositoryMock.Object, shoppingCartRepository.Object); // Act var response = service.AddProductToShoppingCart(request); // Assert Assert.IsFalse(Convert.ToBoolean(response)); }
public bool AddProductToShoppingCart(AddToShoppingCartRequest request) { string productId = request.ProductId; int amount = request.Amount; var product = productRepository.GetByProductId(productId); var isAdded = true; if (product == null || product.AvailableQuantity == 0 || amount == 0) { return(false); } var shoppingCartItem = shoppingCartRepository.GetShoppingCartByProductId(productId); //if this product is not in shopping cart if (shoppingCartItem == null) { shoppingCartItem = new ShoppingCart { ProductId = product.Id, Amount = Math.Min(product.AvailableQuantity, amount) }; //adds the product to the shopping cart as much as the amount available in stock shoppingCartRepository.Add(shoppingCartItem); } else { if (product.AvailableQuantity - shoppingCartItem.Amount - amount >= 0) { shoppingCartItem.Amount += amount; } else { shoppingCartItem.Amount += (product.AvailableQuantity - shoppingCartItem.Amount); isAdded = false; } shoppingCartRepository.UpdateShoppingCart(shoppingCartItem); } return(isAdded); }