public CartFull Convert(IEnumerable <ProductUser> source, CartFull destination, ResolutionContext context)
        {
            if (!source.Any())
            {
                return(null);
            }

            var userId =
                source
                .First()
                .UserId;

            var productCarts = new List <ProductCart>();

            foreach (var productUser in source)
            {
                var productCart = context.Mapper.Map <ProductUser, ProductCart>(productUser);
                productCarts
                .Add(productCart);
            }

            return(new CartFull
            {
                UserId = userId,
                Products = productCarts
            });
        }
        public void Can_Remove_Line()
        {
            // Arrange - create some test products
            Products p1 = new Products {
                ProductId = 1, ProductName = "P1"
            };
            Products p2 = new Products {
                ProductId = 2, ProductName = "P2"
            };
            Products p3 = new Products {
                ProductId = 3, ProductName = "P3"
            };
            // Arrange - create a new cart
            CartFull target = new CartFull();

            // Arrange - add some products to the cart
            target.AddItem(p1, 1);
            target.AddItem(p2, 3);
            target.AddItem(p3, 5);
            target.AddItem(p2, 1);
            // Act
            target.RemoveLine(p2);
            // Assert
            Assert.Equal(0, target.Lines.Where(c => c.Product == p2).Count());
            Assert.Equal(2, target.Lines.Count());
        }
        public void Calculate_Cart_Total()
        {
            // Arrange - create some test products
            Products p1 = new Products {
                ProductId = 1, ProductName = "P1", UnitPrice = 100M
            };
            Products p2 = new Products {
                ProductId = 2, ProductName = "P2", UnitPrice = 50M
            };
            // Arrange - create a new cart
            CartFull target = new CartFull();

            // Act
            target.AddItem(p1, 1);
            target.AddItem(p2, 1);
            target.AddItem(p1, 3);
            decimal result = target.ComputeTotalValue();

            // Assert
            Assert.Equal(450M, result);
        }
        public void Can_Add_Quantity_For_Existing_Lines()
        {
            // Arrange - create some test products
            Products p1 = new Products {
                ProductId = 1, ProductName = "P1"
            };
            Products p2 = new Products {
                ProductId = 2, ProductName = "P2"
            };
            // Arrange - create a new cart
            CartFull target = new CartFull();

            // Act
            target.AddItem(p1, 1);
            target.AddItem(p2, 1);
            target.AddItem(p1, 10);
            CartLine[] results = target.Lines.OrderBy(c => c.Product.ProductId).ToArray();
            // Assert
            Assert.Equal(2, results.Length);
            Assert.Equal(11, results[0].Quantity);
            Assert.Equal(1, results[1].Quantity);
        }
        public void Can_Add_New_Line()
        {
            // Arrange create some test products
            Products p1 = new Products {
                ProductId = 1, ProductName = "p1"
            };
            Products p2 = new Products {
                ProductId = 2, ProductName = "p2"
            };

            // Arange create a new Cart
            CartFull target = new CartFull();

            // Act
            target.AddItem(p1, 1);
            target.AddItem(p2, 1);
            CartLine[] result = target.Lines.ToArray();

            // Assert
            Assert.Equal(2, result.Length);
            Assert.Equal(p1, result[0].Product);
            Assert.Equal(p2, result[1].Product);
        }