Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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");
        }
Ejemplo n.º 5
0
        public async Task <ActionResult> AddProducts([FromBody] AddProductToShoppingCart request)
        {
            var userId = GetUserId();

            return(await _cartService.AddProductToShoppingCartAsync(request, userId));
        }
Ejemplo n.º 6
0
 public async Task AddToShoppingCart()
 {
     Console.WriteLine("crap");
     await AddProductToShoppingCart.Execute(Product, Quantity);
 }