예제 #1
0
        public void CartItemManager_AddToCart_ShouldPersistToDb()
        {
            var addToCartModel = new AddToCartModel { ProductVariant = _productVariant, Quantity = 1 };
            _cartItemManager.AddToCart(addToCartModel);

            Session.QueryOver<CartItem>().RowCount().Should().Be(1);
        }
예제 #2
0
        public void CartItemManager_AddToCart_AddsAnItemToTheCart()
        {
            var addToCartModel = new AddToCartModel { ProductVariant= _productVariant, Quantity = 1 };
            _cartItemManager.AddToCart(addToCartModel);

            _cartModel.Items.Should().HaveCount(1);
        }
예제 #3
0
        public void CartItemManager_AddToCart_WithExistingItemShouldOnlyHave1DbRecord()
        {
            _cartModel.Items.Add(new CartItem { Item = _productVariant, Quantity = 1 });
            var addToCartModel = new AddToCartModel { ProductVariant = _productVariant, Quantity = 1 };

            _cartItemManager.AddToCart(addToCartModel);

            Session.QueryOver<CartItem>().RowCount().Should().Be(1);
        }
예제 #4
0
        public void CartItemManager_AddToCart_ShouldIncreaseAmountIfItAlreadyExists()
        {
            _cartModel.Items.Add(new CartItem { Item = _productVariant, Quantity = 1 });
            var addToCartModel = new AddToCartModel { ProductVariant = _productVariant, Quantity = 1 };

            _cartItemManager.AddToCart(addToCartModel);

            _cartModel.Items.Should().HaveCount(1);
        }
예제 #5
0
        public CanAddQuantityValidationResult CanAddQuantity(AddToCartModel model)
        {
            ProductVariant variant = model.ProductVariant;

            if (variant == null)
                return new CanAddQuantityValidationResult("Cannot find the selected variant");
            var quantity = GetRequestedQuantity(variant, model.Quantity);
            if (quantity <= 0)
                return new CanAddQuantityValidationResult("Cannot add an amount less than 1");
            CanBuyStatus canBuy = _productVariantAvailabilityService.CanBuy(variant, quantity);
            if (!canBuy.OK)
                return new CanAddQuantityValidationResult(canBuy.Message);
            return CanAddQuantityValidationResult.Successful;
        }
예제 #6
0
 public AddToCartResult Add(AddToCartModel addToCartModel)
 {
     if (_cartValidationService.CanAddQuantity(addToCartModel).Valid)
     {
         _cartItemManager.AddToCart(addToCartModel);
         return new AddToCartResult
         {
             Success = true,
             ProductVariantId = addToCartModel.ProductVariant.Id,
             Quantity = addToCartModel.Quantity
         };
     }
     return new AddToCartResult();
 }
예제 #7
0
        public void AddToCart(AddToCartModel model)
        {
            int quantity = model.Quantity;
            ProductVariant productVariant = model.ProductVariant;
            var data = model.Data;

            var cart = _cartBuilder.BuildCart();
            CartItem cartItem = GetExistingItem(cart, productVariant, data);
            if (cartItem != null)
                cartItem.Quantity += quantity;
            else
            {
                cartItem = new CartItem
                {
                    Item = productVariant,
                    Quantity = quantity,
                    UserGuid = _getUserGuid.UserGuid,
                    Data = data
                };
                cart.Items.Add(cartItem);
            }
            _session.Transact(session => session.SaveOrUpdate(cartItem));
        }