public void CartService_Remove_Item_When_Decrement_to_0()
        {
            const int item_id = 1;
            var       cart    = new Cart
            {
                Items = new List <CartItem>
                {
                    new CartItem {
                        ProductId = item_id, Quantity = 1
                    },
                    new CartItem {
                        ProductId = 2, Quantity = 5
                    }
                }
            };

            var product_data_mock = new Mock <IProductService>();

            var cart_store_mock = new Mock <ICartStore>();

            cart_store_mock
            .Setup(c => c.Cart)
            .Returns(cart);

            var cart_service = new CookieCartService(product_data_mock.Object, cart_store_mock.Object);

            cart_service.DecrementFromCart(item_id);

            Assert.Equal(5, cart.ItemsCount);
            Assert.Single(cart.Items);
        }
        public void CartService_Decrement_Correct()
        {
            const int item_id = 1;
            var       cart    = new Cart
            {
                Items = new List <CartItem>
                {
                    new CartItem {
                        ProductId = item_id, Quantity = 3
                    },
                    new CartItem {
                        ProductId = 2, Quantity = 5
                    }
                }
            };

            var product_data_mock = new Mock <IProductService>();

            var cart_store_mock = new Mock <ICartStore>();

            cart_store_mock
            .Setup(c => c.Cart)
            .Returns(cart);

            var cart_service = new CookieCartService(product_data_mock.Object, cart_store_mock.Object);

            cart_service.DecrementFromCart(item_id);

            Assert.Equal(7, cart.ItemsCount);
            Assert.Equal(2, cart.Items.Count);
            Assert.Equal(item_id, cart.Items[0].ProductId);
            Assert.Equal(2, cart.Items[0].Quantity);
        }
        public void DecrementFromCartCheck()
        {
            var expectedquantitycart = 5;
            var allProductsend       = 8;
            var indexOfElement       = 1;
            var cart = new Cart
            {
                Items = new List <CartItem>
                {
                    new CartItem {
                        ProductId = 1, Quantity = 6
                    },
                    new CartItem {
                        ProductId = 2, Quantity = 3
                    }
                }
            };
            var productdatamock = new Mock <IProductData>();
            var cartstoremock   = new Mock <ICartStore>();

            cartstoremock.Setup(c => c.Cart)
            .Returns(cart);
            var cartservidse = new CookieCartService(productdatamock.Object, cartstoremock.Object);

            cartservidse.DecrementFromCart(1);
            Assert.Equal(expectedquantitycart, cart.Items.FirstOrDefault(x => x.ProductId == indexOfElement).Quantity);
            Assert.Equal(allProductsend, cart.ItemsCount);
        }
        public void CartService_Remove_Item_When_Decrement()
        {
            var test_item = new CartItem {
                ProductId = 2, Quantity = 1
            };

            //корзина
            var cart = new Cart
            {
                Items = new List <CartItem>
                {
                    new CartItem {
                        ProductId = 1, Quantity = 3
                    },
                    test_item
                }
            };

            //сервис - заглушка
            var product_data_mock = new Mock <IProductData>();

            //сервис хранения корзины
            var cart_store_mock = new Mock <ICartStore>();

            cart_store_mock.Setup(c => c.Cart).Returns(cart);

            var cart_service = new CookieCartService(product_data_mock.Object, cart_store_mock.Object);

            cart_service.DecrementFromCart(test_item.ProductId);

            //сравниваем кол-во товаров
            var result_count = cart.Items.Count;

            Assert.Equal(1, result_count);
            Assert.Equal(3, cart.ItemsCount);
            //Assert.Equal(1, cart.Items.First().ProductId);
            //Assert.False(cart.Items.Contains(test_item));
            Assert.True(cart.Items.Find(e => e.ProductId == test_item.ProductId) is null);
        }
        public void CartService_Decrement_Correct()
        {
            const int expected_product_id = 1;
            const int expected_quantity   = 2;

            //корзина
            var cart = new Cart
            {
                Items = new List <CartItem>
                {
                    new CartItem {
                        ProductId = expected_product_id, Quantity = expected_quantity + 1
                    },
                    new CartItem {
                        ProductId = 2, Quantity = 1
                    },
                }
            };

            //сервис - заглушка
            var product_data_mock = new Mock <IProductData>();

            //сервис хранения корзины
            var cart_store_mock = new Mock <ICartStore>();

            cart_store_mock.Setup(c => c.Cart).Returns(cart);

            var cart_service = new CookieCartService(product_data_mock.Object, cart_store_mock.Object);

            cart_service.DecrementFromCart(expected_product_id);

            //сравниваем кол-во товаров
            var result_count = cart.Items.Count;

            Assert.Equal(2, result_count);
            Assert.Equal(expected_quantity + 1, cart.ItemsCount);
            Assert.Equal(expected_product_id, cart.Items.First().ProductId);
            Assert.Equal(expected_quantity, cart.Items.First().Quantity);
        }