public void YieldsCorrectRemainingItem_WhenAddingMultipleProductsThenRemovingOneFromCart()
        {
            // Arrange
            var cartItemsAdded = new List <CartItem>();

            _cartService = new CartItemService(_cartItemRepository);
            var cartItem1 = Mock.Of <CartItem>(ci => ci.Id == 1 &&
                                               ci.Quantity == 1 &&
                                               ci.ProductId == 101);
            var cartItem2 = Mock.Of <CartItem>(ci => ci.Id == 2 &&
                                               ci.Quantity == 1 &&
                                               ci.ProductId == 102);

            Mock.Get(_cartItemRepository).Setup(cir => cir.AddCartItem(It.IsAny <CartItem>()))
            .Callback <CartItem>(ci => cartItemsAdded.Add(ci));
            Mock.Get(_cartItemRepository).Setup(cir => cir.RemoveCartItem(It.IsAny <CartItem>()))
            .Callback <CartItem>(ci => cartItemsAdded.Remove(ci));
            Mock.Get(_cartItemRepository).Setup(cir => cir.GetCartItems())
            .Returns(cartItemsAdded);

            // Act
            _cartService.Add(cartItem1);
            _cartService.Add(cartItem2);
            _cartService.Remove(cartItem2.Id);

            // Assert
            Mock.Get(_cartItemRepository).Verify(cir => cir.AddCartItem(cartItem1), Times.Once());
            Mock.Get(_cartItemRepository).Verify(cir => cir.AddCartItem(cartItem2), Times.Once());
            cartItemsAdded.Should().ContainSingle(ci => ci == cartItem1);
        }
Example #2
0
        public IActionResult Add(CartItem cartItem)
        {
            var result = _cartItemService.Add(cartItem);

            if (result.Success)
            {
                return(Ok(result));
            }
            return(BadRequest(result));
        }
        public void CartItemRepoAddCartItemInvoked_WhenAddingToCart()
        {
            // Arrange
            _cartService = new CartItemService(_cartItemRepository);

            // Act
            _cartService.Add(_cartItem);

            // Assert
            Mock.Get(_cartItemRepository).Verify(cir => cir.AddCartItem(_cartItem), Times.Once);
        }
        public void YieldsCorrectCount_WhenAddMultipleProductsToCart()
        {
            // Arrange
            var cartItemsAdded = new List <CartItem>();

            _cartService = new CartItemService(_cartItemRepository);
            var cartItem1 = Mock.Of <CartItem>(ci => ci.Id == 1 &&
                                               ci.Quantity == 1 &&
                                               ci.ProductId == 101);
            var cartItem2 = Mock.Of <CartItem>(ci => ci.Id == 2 &&
                                               ci.Quantity == 1 &&
                                               ci.ProductId == 102);

            // Act
            _cartService.Add(cartItem1);
            _cartService.Add(cartItem2);

            // Assert
            Mock.Get(_cartItemRepository).Verify(cir => cir.AddCartItem(cartItem1), Times.Once());
            Mock.Get(_cartItemRepository).Verify(cir => cir.AddCartItem(cartItem2), Times.Once());
        }
        public void AddCartItemInvokedWithMatchingCartItem_WhenAddingToCart()
        {
            // Arrange
            _cartService = new CartItemService(_cartItemRepository);

            // Act
            _cartService.Add(_cartItem);

            // Assert
            Mock.Get(_cartItemRepository).Verify(cir =>
                                                 cir.AddCartItem(It.Is <CartItem>(ci => ci.ProductId == _cartItem.ProductId)), Times.Once);
        }
Example #6
0
        public async Task <IActionResult> Create([FromBody] AddToCartRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }
            try
            {
                var response = await _cartItemService.Add(request);

                return(Ok(response));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
 public IActionResult Add([FromBody] CartItem cartItem)
 {
     cartItemService.Add(cartItem);
     return(Ok());
 }