public async Task AddProductToShoppingCartAsync_NotActiveCart_ThrowsException() { var userId = 1; var shoppingCartId = 2; var productId = 3; var request = new AddProductToShoppingCart { ProductId = productId, Quantity = 5, ShoppingCartId = shoppingCartId }; var cartEntity = new ShoppingCart { Id = shoppingCartId, IsActive = false, UserId = userId }; var callToGetShoppingCart = A.CallTo(() => _cartRepository.GetShoppingCartAsync(shoppingCartId)); callToGetShoppingCart.Returns(cartEntity); Exception ex = await Assert.ThrowsAsync <Exception>(() => _cartService.AddProductToShoppingCartAsync(request, userId)); Assert.Equal("Shopping Cart is not active.", ex.Message); callToGetShoppingCart.MustHaveHappenedOnceExactly(); }
public async Task <ActionResult> AddProductToShoppingCartAsync(AddProductToShoppingCart request, int userId) { var shoppingCart = await _cartRepository.GetShoppingCartAsync(request.ShoppingCartId); if (shoppingCart.UserId != userId) { return(new UnauthorizedResult()); } if (!shoppingCart.IsActive) { throw new Exception("Shopping Cart is not active."); } var product = await _productRepository.GetProductAsync(request.ProductId); if (product.Quantity < request.Quantity) { throw new Exception("Not enough items"); } await _cartRepository.AddShoppingCartProductAsync(shoppingCart, product, request.Quantity); return(new NoContentResult()); }
public async Task AddProductToShoppingCartAsync_ValidProduct_AddedProduct() { var userId = 1; var shoppingCartId = 2; var productId = 3; var request = new AddProductToShoppingCart { ProductId = productId, Quantity = 5, ShoppingCartId = shoppingCartId, }; var cartEntity = new ShoppingCart { Id = shoppingCartId, IsActive = true, UserId = userId }; var productEntity = new Product { Id = productId, Description = "Test_Description", Name = "Test_Name", Price = 2.56, Quantity = 100 }; var callToGetShoppingCart = A.CallTo(() => _cartRepository.GetShoppingCartAsync(shoppingCartId)); callToGetShoppingCart.Returns(cartEntity); var callToGetProduct = A.CallTo(() => _productRepository.GetProductAsync(productId)); callToGetProduct.Returns(productEntity); var callToAddProduct = A.CallTo(() => _cartRepository.AddShoppingCartProductAsync(cartEntity, productEntity, request.Quantity)); await _cartService.AddProductToShoppingCartAsync(request, userId); callToGetShoppingCart.MustHaveHappenedOnceExactly(); callToGetProduct.MustHaveHappenedOnceExactly(); callToAddProduct.MustHaveHappenedOnceExactly(); }
public ActionResult AddProduct(Product p) { Guid shoppingCartId; var visitorId = new Guid(Request.Cookies["MyShopVisitorIdentifier"].Value); var shoppingCart = new ShoppingCartRepository().FindByVisitorId(visitorId); if (shoppingCart == null) { shoppingCartId = Guid.NewGuid(); var command = new CreateShoppingCartForVisitor(shoppingCartId, visitorId); MyShopWebApplication.CommandService.Execute(command); } else { shoppingCartId = shoppingCart.Id; } var addProductCommand = new AddProductToShoppingCart(shoppingCartId, p.Id, 1); MyShopWebApplication.CommandService.Execute(addProductCommand); return RedirectToAction("Index"); }
public async Task <ActionResult> AddProducts([FromBody] AddProductToShoppingCart request) { var userId = GetUserId(); return(await _cartService.AddProductToShoppingCartAsync(request, userId)); }
public async Task AddToShoppingCart() { Console.WriteLine("crap"); await AddProductToShoppingCart.Execute(Product, Quantity); }