Ejemplo n.º 1
0
        public void DeveryScenario_Should_Work()
        {
            // Arrange
            var shoppingCart = new ShoppingCart(1);
            var category     = new FirstCategory(1, "Food");
            var apple        = new FirstProduct(1, "Apple", 100, category);
            var almonds      = new FirstProduct(1, "Almonds", 150, category);

            shoppingCart.AddProduct(apple, 3);
            shoppingCart.AddProduct(almonds);

            var campaign1 = new CampaignDiscountByPercentage(1, "Food Campaign 1", 20, category, 3);
            var campaign2 = new CampaignDiscountByPercentage(2, "Food Campaign 2", 50, category, 5);
            var campaign3 = new CampaignDiscountByAmount(3, "Food Campaign 3", 5, category, 0);
            var campaigns = new List <CampaignBase>()
            {
                campaign1, campaign2, campaign3
            };

            var coupon = new CouponDiscountByPercentage(1, 100, 10);

            shoppingCart.AddCoupon(coupon);

            var delivery = new DeliverDynamic((decimal)2.99, 5, 3);

            // Act

            shoppingCart.ApplyDiscounts(campaigns);

            shoppingCart.ApplayDelivery(delivery);
            // Assert
            Assert.True(shoppingCart._isCouponApplied == true && shoppingCart._isCampaignApplied == true);
        }
Ejemplo n.º 2
0
        public void Total_ShouldReturnCorrectValue_WhenProductsRemoved()
        {
            // Arrange
            var shoppingCart = new ShoppingCart();

            var product1 = new Mock <IProductModel>();

            product1.SetupGet(x => x.Price).Returns(10.0m);
            product1.SetupGet(x => x.Id).Returns(1);

            var product2 = new Mock <IProductModel>();

            product2.SetupGet(x => x.Price).Returns(5.1m);
            product1.SetupGet(x => x.Price).Returns(10.0m);
            product2.SetupGet(x => x.Id).Returns(2);

            // Act
            shoppingCart.AddProduct(product1.Object);
            shoppingCart.AddProduct(product2.Object);
            shoppingCart.RemoveProduct(product2.Object);

            //Assert
            Assert.AreEqual(10.0m, shoppingCart.Total);
            Assert.AreEqual(1, shoppingCart.Products.Count);
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            Product p1 = new Product(1, "Red Dead Redemption 2", 399f);

            Product p2 = new Product(2, "GTA V", 295.50f);

            Product p3 = new Product(3, "Bully", 170.32f);

            Product p4 = new Product(4, "Last of Us 2", 270.32f);


            ShoppingCart cart = new ShoppingCart();

            cart.AddProduct(p1);
            cart.AddProduct(p2);
            cart.AddProduct(p3);
            cart.AddProduct(p4);


            cart.ShowProduct();


            Product p5 = new Product(5, "GTA San Andreas", 120f);


            cart.AlterItem(1, p5);


            cart.ShowProduct();
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            Category category1 = new Category("category1");
            Category category2 = new Category("category2");


            Product product1 = new Product("Product1", 100, category1);
            Product product2 = new Product("Product2", 50, category1);
            Product product3 = new Product("Product3", 40, category2);



            ICampaign rateCampaign   = new RateCampaign(20.0, 5, category1);
            ICampaign amountCampaing = new AmountCampaign(10.0, category2);

            IShoppingCart shoppingcart = new ShoppingCart(new DeliveryCost(1.5, 10));

            shoppingcart.AddProduct(product1, 12);
            shoppingcart.AddProduct(product2, 10);
            shoppingcart.AddProduct(product3, 11);

            List <ICampaign> campaigns = new List <ICampaign>();

            campaigns.Add(rateCampaign);
            campaigns.Add(amountCampaing);
            ICoupon rateCoupon = new RateCoupon(5.0, 3);

            shoppingcart.AddCampaign(campaigns);
            shoppingcart.AddCoupon(rateCoupon);
            double totalAmount = shoppingcart.GetTotalAmountAfterDiscounts();

            System.Console.WriteLine(shoppingcart.Print());
            System.Console.ReadLine();
        }
Ejemplo n.º 5
0
        public void AddItems_3Items_2UniqueProducts_GetsQuantityANDPriceCalculations()
        {
            //arrange
            ShoppingCart shoppingCart = new ShoppingCart();
            var          items        = new Product[] {
                new Product {
                    ID = 1, Price = 10, Name = "Product1"
                },
                new Product {
                    ID = 2, Price = 100, Name = "Product2"
                },
                new Product {
                    ID = 1, Price = 10, Name = "Product1"
                }
            };

            //act
            shoppingCart.AddProduct(items[0], 1);
            shoppingCart.AddProduct(items[1], 1);
            shoppingCart.AddProduct(items[2], 1);

            //assert
            //Assert.IsTrue(shoppingCart.QuantityAllItems == 3, "wrong quantity of all tems");
            //Assert.IsTrue(shoppingCart.QuantityUniqueItems == 2, "wrong quantity of unique tems");
            //Assert.IsTrue(shoppingCart.TotalCosts == 120, "wrong total costs");
        }
Ejemplo n.º 6
0
        //René
        private void buttonProduct_Click(object sender, EventArgs e)
        {
            var cusButton = sender as CustomButton;

            if (cusButton != null)
            {
                var product = cusButton.Obj as Product;
                if (product != null)
                {
                    ShoppingCartItem item;
                    bool             isNewProduct;
                    int amount;
                    if (int.TryParse(tb_NumpadDisplay.Text, out amount))
                    {
                        item = _shoppingCart.AddProduct(product, out isNewProduct, amount);
                    }
                    else
                    {
                        item = _shoppingCart.AddProduct(product, out isNewProduct);
                    }
                    if (isNewProduct)
                    {
                        GenerateOrderPosition(item);
                    }
                    tb_NumpadDisplay.Clear();
                }
            }
        }
Ejemplo n.º 7
0
        public void ShoppingCartAddProductTest()
        {
            var products = new List <IProduct>();

            products.Add(new Product {
                Name = "Test", UnitPrice = 1
            });
            products.Add(new Product {
                Name = "Test2", UnitPrice = 2
            });


            var productStorage  = new ProductStorage(products);
            var discountStorage = new DiscountStorage(new List <IDiscount>());

            //checking that by default the cart is empty
            var shoppingCart = new ShoppingCart(productStorage, discountStorage);
            var testItems    = shoppingCart.GetShoppingCartItems();

            Assert.IsNotNull(testItems);
            Assert.AreEqual(0, testItems.Count);

            //basic add functionality test
            shoppingCart.AddProduct("Test", 1);
            shoppingCart.AddProduct("Test2", 1);

            testItems = shoppingCart.GetShoppingCartItems();
            Assert.IsNotNull(testItems);
            var testItem = testItems.FirstOrDefault(x => x.Product.Name == "Test");

            TestUtil.AssertEqualShoppingCartItems(testItem, new ShoppingCartItem {
                Product = new Product {
                    Name = "Test", UnitPrice = 1
                }, Quantity = 1
            });
            var testItem2 = testItems.FirstOrDefault(x => x.Product.Name == "Test2");

            TestUtil.AssertEqualShoppingCartItems(testItem2, new ShoppingCartItem {
                Product = new Product {
                    Name = "Test2", UnitPrice = 2
                }, Quantity = 1
            });

            //items grouping test
            shoppingCart.AddProduct("Test", 5);
            testItems = shoppingCart.GetShoppingCartItems();
            testItem  = testItems.FirstOrDefault(x => x.Product.Name == "Test");
            TestUtil.AssertEqualShoppingCartItems(testItem, new ShoppingCartItem {
                Product = new Product {
                    Name = "Test", UnitPrice = 1
                }, Quantity = 6
            });
            testItem2 = testItems.FirstOrDefault(x => x.Product.Name == "Test2");
            TestUtil.AssertEqualShoppingCartItems(testItem2, new ShoppingCartItem {
                Product = new Product {
                    Name = "Test2", UnitPrice = 2
                }, Quantity = 1
            });
        }
Ejemplo n.º 8
0
        static void Main(string[] args)
        {
            // example run of the Shopping Cart using the exact data from the task
            var products = new List <IProduct>()
            {
                new Product {
                    Name = "butter", UnitPrice = 0.80M
                },
                new Product {
                    Name = "milk", UnitPrice = 1.15M
                },
                new Product {
                    Name = "bread", UnitPrice = 1M
                }
            };

            var discounts = new List <IDiscount>()
            {
                new CombinationDiscount("butter", 2, "bread", 0.50M),
                new FreeProductDiscount("milk", 4)
            };

            var shoppingCart = new ShoppingCart(new ProductStorage(products), new DiscountStorage(discounts));

            Console.WriteLine();
            Console.WriteLine("Scenario 1:");
            shoppingCart.AddProduct("bread", 1);
            shoppingCart.AddProduct("butter", 1);
            shoppingCart.AddProduct("milk", 1);
            shoppingCart.CalculateTotal();

            shoppingCart = new ShoppingCart(new ProductStorage(products), new DiscountStorage(discounts));

            Console.WriteLine();
            Console.WriteLine("Scenario 2:");
            shoppingCart.AddProduct("bread", 2);
            shoppingCart.AddProduct("butter", 2);
            shoppingCart.CalculateTotal();

            shoppingCart = new ShoppingCart(new ProductStorage(products), new DiscountStorage(discounts));

            Console.WriteLine();
            Console.WriteLine("Scenario 3:");
            shoppingCart.AddProduct("milk", 4);
            shoppingCart.CalculateTotal();

            shoppingCart = new ShoppingCart(new ProductStorage(products), new DiscountStorage(discounts));

            Console.WriteLine();
            Console.WriteLine("Scenario 4:");
            shoppingCart.AddProduct("bread", 1);
            shoppingCart.AddProduct("butter", 2);
            shoppingCart.AddProduct("milk", 8);
            shoppingCart.CalculateTotal();

            Console.ReadLine();
        }
Ejemplo n.º 9
0
        public void Add_To_ShoppingCart()
        {
            Product product = new Product()
            {
                ProductCode = "B1", Description = "Banana", Quantity = 2, UnitPrice = 7.65M
            };

            _shoppingCart.AddProduct(product);
            Assert.AreEqual(2, _shoppingCart.Products.Count);
        }
Ejemplo n.º 10
0
        public void When_removing_one_ex_number_will_decrease()
        {
            var sut = new ShoppingCart();

            sut.AddProduct(1010, "Äpple", 1, 12.2m);
            sut.AddProduct(1011, "Päron", 2, 13.2m);
            sut.AddProduct(1011, "Päron", 3, 13.2m);
            sut.RemoveProduct(1011, 1);
            Assert.AreEqual(4, sut.GetItem(1011).Antal);
        }
Ejemplo n.º 11
0
        public void When_adding_product_already_in_cart_then_count_for_cartitem_should_increase()
        {
            var sut = new ShoppingCart();

            sut.AddProduct(1010, "Äpple", 1, 12.2m);
            sut.AddProduct(1011, "Päron", 2, 13.2m);
            sut.AddProduct(1011, "Päron", 3, 13.2m);

            Assert.AreEqual(5, sut.GetItem(1011).Antal);
        }
Ejemplo n.º 12
0
        public void When_adding_product_not_already_in_cart_then_number_of_items_should_increase_by_one()
        {
            var sut = new ShoppingCart();

            sut.AddProduct(1010, "Äpple", 1, 12.2m);
            int antal = sut.GetUniqueProductsCount();

            sut.AddProduct(1011, "Päron", 2, 13.2m);

            Assert.AreEqual(antal + 1, sut.GetUniqueProductsCount());
        }
Ejemplo n.º 13
0
        public void When_adding_product_total_should_update_correctly()
        {
            var sut = new ShoppingCart();

            sut.AddProduct(1010, "Äpple", 1, 12.2m);
            var total = sut.Total();

            sut.AddProduct(1011, "Päron", 1, 13.2m);

            Assert.AreEqual(total + 13.2m, sut.Total());
        }
Ejemplo n.º 14
0
        public void ReturnCorrectTotalAmount_WhenTotalPriceIsCalled()
        {
            var cart = new ShoppingCart();

            var product = new Shampoo("Pesho", "Nivea", 2.5m, GenderType.Men, 500, UsageType.EveryDay);

            cart.AddProduct(product);
            cart.AddProduct(product);

            Assert.AreEqual(2500m, cart.TotalPrice());
        }
Ejemplo n.º 15
0
        public void Step2_Add_Five_DoveSoaps_Calculates_Correct_ShoppingCart_TaxExcludedTotal()
        {
            var shoppingCart = new ShoppingCart();

            shoppingCart.AddProduct(Helper.CreateDoveSoap());
            shoppingCart.AddProduct(Helper.CreateDoveSoap());
            shoppingCart.AddProduct(Helper.CreateDoveSoap());
            shoppingCart.AddProduct(Helper.CreateDoveSoap());
            shoppingCart.AddProduct(Helper.CreateDoveSoap());

            Assert.AreEqual(199.95, shoppingCart.TaxExcludedTotal, "When multiple items are added to the cart, the cart should reflect the correct tax exclusive total.");
        }
Ejemplo n.º 16
0
        public void AddProductWhenProductIsValid()
        {
            // Arrange
            var cart         = new ShoppingCart();
            var productToAdd = new Mock <Product>(MockBehavior.Loose, new object[] { "name", "brand", 10m, GenderType.Men });

            // Act
            cart.AddProduct(productToAdd.Object);
            cart.AddProduct(productToAdd.Object);

            //Assert
            Assert.AreEqual(2, cart.ProductList.Count);
        }
        public void AddProductWhenProductIsValid()
        {
            // Arrange
            var cart         = new ShoppingCart();
            var productToAdd = new Mock <IProduct>();

            // Act
            cart.AddProduct(productToAdd.Object);
            cart.AddProduct(productToAdd.Object);

            //Assert
            Assert.AreEqual(2, cart.ProductList.Count);
        }
Ejemplo n.º 18
0
        public void ShoppingCartAddProductValidationTest()
        {
            var products = new List <IProduct>();

            products.Add(new Product {
                Name = "Test", UnitPrice = 1
            });
            products.Add(new Product {
                Name = "Test2", UnitPrice = 2
            });


            var productStorage  = new ProductStorage(products);
            var discountStorage = new DiscountStorage(new List <IDiscount>());

            var shoppingCart = new ShoppingCart(productStorage, discountStorage);

            //add unknown product
            try
            {
                shoppingCart.AddProduct("Test3", 1);
                Assert.Fail();
            }
            catch (Exception e)
            {
                Assert.IsInstanceOfType(e, typeof(ArgumentException));
            }

            //add zero quantity
            try
            {
                shoppingCart.AddProduct("Test", 0);
                Assert.Fail();
            }
            catch (Exception e)
            {
                Assert.IsInstanceOfType(e, typeof(ArgumentException));
            }

            //add negative quantity
            try
            {
                shoppingCart.AddProduct("Test2", -3);
                Assert.Fail();
            }
            catch (Exception e)
            {
                Assert.IsInstanceOfType(e, typeof(ArgumentException));
            }
        }
Ejemplo n.º 19
0
        public void When_removing_one_ex_and_product_is_not_in_cart_nothing_happens()
        {
            var sut = new ShoppingCart();

            sut.AddProduct(1010, "Äpple", 1, 12.2m);
            sut.AddProduct(1011, "Päron", 2, 13.2m);
            sut.AddProduct(1011, "Päron", 3, 13.2m);

            var total = sut.Total();

            sut.RemoveProduct(1012, 1);

            Assert.AreEqual(total, sut.Total());
        }
Ejemplo n.º 20
0
        public void Checkout_TotalWithNoDiscount()
        {
            // Arrange
            var sut = new ShoppingCart(new List <Discount>());

            // Act
            sut.AddProduct(new Product("Milk", 1.30M));
            sut.AddProduct(new Product("Beans", .80M));
            sut.Checkout();

            // Assert
            Assert.Equal(2.10M, sut.SubTotal);
            Assert.Equal(2.10M, sut.Total);
        }
Ejemplo n.º 21
0
        public void GetProductQuantityOfCategory_ShouldReturnCorrect_IfThereIsSeventeenItemsInSameCategory()
        {
            Category     electronicCategory = new Category(CategoryType.Electronic);
            Product      television         = new Product("Television", 800, electronicCategory);
            Product      telephone          = new Product("Telephone", 500, electronicCategory);
            Product      smartBand          = new Product("SmartBand", 300, electronicCategory);
            ShoppingCart shoppingCart       = new ShoppingCart();

            shoppingCart.AddProduct(television, 2);
            shoppingCart.AddProduct(telephone, 5);
            shoppingCart.AddProduct(smartBand, 10);
            var productQuantityOfCategory = shoppingCart.GetProductQuantityOfCategory(electronicCategory);

            Assert.Equal(17u, productQuantityOfCategory);
        }
Ejemplo n.º 22
0
        public void ApplyCoupon_ShouldApplyDiscount_IfMinimumAmountSatisfied(DiscountType discountType, decimal expected)
        {
            Category     electronicCategory = new Category(CategoryType.Electronic);
            Category     foodCategory       = new Category(CategoryType.Food);
            Product      television         = new Product("Television", 1000, electronicCategory);
            Product      apple        = new Product("Apple", 5, foodCategory);
            ShoppingCart shoppingCart = new ShoppingCart();
            Coupon       coupon       = CouponFactory.GenerateCoupon(4000, 20, discountType);

            shoppingCart.AddProduct(television, 4);
            shoppingCart.AddProduct(apple, 200);
            shoppingCart.ApplyCoupon(coupon);

            Assert.Equal(expected, shoppingCart.DiscountedTotalAmount);
        }
Ejemplo n.º 23
0
        public void Checkout_TotalWithDiscount()
        {
            // Arrange
            var sut = new ShoppingCart(LoadData.Discounts);

            // Act
            sut.AddProduct(new Product("Apple", 1.30M));
            sut.AddProduct(new Product("Beans", .80M));
            sut.Checkout();

            // Assert
            Assert.Equal(2.10M, sut.SubTotal);
            Assert.Single(sut.DiscountsApplied);
            Assert.Equal(.13M, sut.DiscountsApplied.First().DiscountAmount);
            Assert.Equal(1.97M, sut.Total);
        }
Ejemplo n.º 24
0
        public void Cart_GetTotal_TotalAmount()
        {
            ShoppingCart cart             = new ShoppingCart();
            double       expectedSubtotal = 4.97 * 1.06; // Assuming 6% sales tax
            Product      testItem         = new Product("Holland, 1945", "Ska", "Netural Milk Hotel", 2.99);
            Product      testItem2        = new Product("Ruler of Everything", "Rich", "Tally Hall", 0.99);

            cart.AddProduct(testItem, 1);
            cart.AddProduct(testItem2, 2);

            double actualSubTotal = cart.Total;

            // Assert

            Assert.Equal(expectedSubtotal, actualSubTotal, 2);
        }
Ejemplo n.º 25
0
    public static result addCartByProductId(string id, string name, string quantity, string sale)
    {
        CNManagerDataContext db = new CNManagerDataContext();
        clsProcess           cl = new clsProcess();

        var r = new result();

        try
        {
            ShoppingCart cart  = (ShoppingCart)HttpContext.Current.Session["Cart"];
            string       idPro = id;
            if (cart.ReturnID(idPro))
            {
                cart.Update(idPro, cart.GetCurrentQuantity(idPro));
                HttpContext.Current.Session["cart_count"] = r._content = cart.GetTotalQuantity.ToString();
                r._mess = "Đã cập nhật số lượng sản phẩm [" + name + "] vào giỏ hàng";
            }
            else
            {
                var pro = db.sp_web_cn_loadProductDetail(branchTypeId.ToString(), int.Parse(id.Trim())).FirstOrDefault();

                cart.AddProduct(id.ToString(), cl.ConvertToUnSign(pro.ProductName), pro.ProductCode, pro.ProductName,
                                (pro.Image == null || pro.Image == "" ? "/image/image-coming-soon.png" : pro.Image), int.Parse(quantity), pro.Price.Value, 0, pro.Score != null ? pro.Score.Value : 0,
                                pro.BrandName, pro.CountryName, sale == "1" ? true : false);

                HttpContext.Current.Session["cart_count"] = r._content = cart.GetTotalQuantity.ToString();
                r._mess = "Đã thêm sản phẩm [" + name + "] vào giỏ hàng";
            }
        }
        catch (Exception ax)
        {
            r._mess = ax.Message;
        }
        return(r);
    }
Ejemplo n.º 26
0
 //Shopping Cart
 public void AddItemToCart(Product product)
 {
     sc.AddProduct(product);
     //CartNumber++;
     OnPropertyChanged("CartNumber");
     OnPropertyChanged("CartTotal");
 }
Ejemplo n.º 27
0
        public void GetNumberOfDeliveries_ShouldReturnCorrectValue_IfThereIsTwoCategory()
        {
            Category     electronicCategory = new Category(CategoryType.Electronic);
            Category     clothing           = new Category(CategoryType.Clothing);
            Product      television         = new Product("Television", 800, electronicCategory);
            Product      telephone          = new Product("Telephone", 500, electronicCategory);
            Product      weddingDress       = new Product("Wedding Dress", 400, clothing);
            ShoppingCart shoppingCart       = new ShoppingCart();

            shoppingCart.AddProduct(television, 2);
            shoppingCart.AddProduct(telephone, 5);
            shoppingCart.AddProduct(weddingDress, 10);
            var numberOfDeliveries = shoppingCart.GetNumberOfDeliveries();

            Assert.Equal(2, numberOfDeliveries);
        }
Ejemplo n.º 28
0
        public void ProductSubtotalGetsUpdatedAccordingly_WhenVariousProductsInShoppingCart_Test()
        {
            //Arrange
            var shoppingCart = new ShoppingCart("Loyal");
            var product      = new Product1(4);
            var product1     = new Product2(2);

            shoppingCart.AddProduct(product);
            shoppingCart.AddProduct(product1);

            //Act
            var expected = product.ProductPrice * 4 + product1.ProductPrice * 2;

            //Assert
            Assert.AreEqual(expected, shoppingCart.InvoiceSubtotal());
        }
        public void AddProduct_WhenAddingNullProduct_ShouldThrowNullReferenceException()
        {
            IProduct toAdd        = null;
            var      shoppingCart = new ShoppingCart();

            Assert.Throws <NullReferenceException>(() => shoppingCart.AddProduct(toAdd));
        }
Ejemplo n.º 30
0
        public void ThrowWhenTheProductIsNull()
        {
            // Arrange, Act
            var cart = new ShoppingCart();

            // Act, Assert
            Assert.ThrowsException <ArgumentNullException>(() => cart.AddProduct(null));
        }