Пример #1
0
 public void Cart_Returns_Null_When_No_Sku_Found()
 {
     ShoppingCart cart = new ShoppingCart("TEST");
     Product p = new Product("SKU");
     cart.AddItem(p, 1);
     var item = cart.FindItem("SKU1");
     Assert.IsNull(item);
 }
Пример #2
0
 public void Cart_Can_Return_Item_By_SKU()
 {
     ShoppingCart cart = new ShoppingCart("TEST");
     Product p = new Product("SKU");
     cart.AddItem(p, 1);
     var item = cart.FindItem("SKU");
     Assert.IsNotNull(item);
 }
Пример #3
0
 public void Cart_Item_Quantity_Should_Adjust_To_10()
 {
     ShoppingCart cart = new ShoppingCart("TEST");
     Product p = new Product("SKU");
     cart.AddItem(p);
     cart.AdjustQuantity(p, 10);
     Assert.AreEqual(10, cart.TotalItems);
 }
Пример #4
0
        public void ItemLastAdded_Should_Be_Sku2_When_SKu1_Sku2_Added_In_Sequence()
        {
            ShoppingCart cart = new ShoppingCart("TEST");
            Product p = new Product("SKU1");
            Product p2 = new Product("SKU2");
            cart.AddItem(p, 1, DateTime.Now.AddSeconds(-1));
            cart.AddItem(p2, 1, DateTime.Now.AddSeconds(1));

            Assert.AreEqual("SKU2", cart.ItemLastAdded.Product.SKU);
        }
Пример #5
0
        public MockProductRepository()
        {
            //load up the repo list
            productList = new List<Product>();
            imageList = new List<Image>();
            descriptorList = new List<ProductDescriptor>();

            for(int i=1;i<=3;i++){
                imageList.Add(new Image("noimage.gif","noimage.gif"));
            }

            for(int i=1;i<=3;i++){
                descriptorList.Add(new ProductDescriptor("title","Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec non diam eu tellus elementum ullamcorper. Maecenas leo magna, tempor eget, molestie quis, ornare sed, ligula. Etiam purus nisl, tempus a, commodo quis, posuere quis, elit. Nunc urna nisi, varius ut, hendrerit ut, bibendum in, ipsum."));
            }

            for (int i = 1; i <= 5; i++) {

                Product p =new Product("SKU" + i,"Product "+i,"Blurb", true,10);
                p.WeightInPounds = 5;

                //set first three products to shipped
                p.Delivery = i <= 3 ? DeliveryMethod.Shipped : DeliveryMethod.Download;

                //set first three products to Back-orderable
                p.AllowBackOrder = i <= 3;

                //set the 2nd product to BackOrder
                p.Inventory = i == 2 ? InventoryStatus.BackOrder : InventoryStatus.InStock;

                //set all products to taxable, except the 5th
                p.IsTaxable = i != 5;

                p.Recommended = new List<Product>();

                //have it recommend itself, for now
                p.Recommended.Add(p);

                //related
                p.RelatedProducts = new List<Product>();
                for (int x = 0; x < 5; x++)
                {
                    p.RelatedProducts.Add(new Product("SKU_REL" + x));

                }

                //add some Crosses
                p.CrossSells = new LazyList<Product>();
                for (int x = 0; x < 5; x++)
                {
                    p.CrossSells.Add(new Product("SKU_CROSS" + x));

                }
                productList.Add(p);
            }
        }
Пример #6
0
        //this method sets the initial state of your inventory
        public static InventoryState SetState(Product item, int amountOnHand, bool allowBackOrder, DateTime dateAvailable)
        {
            InventoryState result = null;

            if (item.IsOnPreOrder()) {
                result=new OnPreOrder(item);
            } else if (item.IsUnavailable()) {
                result = new Unavailable(item);
            } else if (item.IsOnBackOrder()) {
                result = new OnBackOrder(item);
            } else {
             result = new InStock(item);
            }

            return result;
        }
Пример #7
0
 public void Items_Count_Should_Be_1_When_2_of_Same_Product_Added()
 {
     ShoppingCart cart = new ShoppingCart("TEST");
     Product p = new Product("SKU");
     cart.AddItem(p);
     cart.AddItem(p);
     Assert.AreEqual(1, cart.Items.Count);
 }
Пример #8
0
        public void Items_Count_Should_Be_0_When_SKU_Removed()
        {
            ShoppingCart cart = new ShoppingCart("TEST");
            Product p = new Product("SKU");
            cart.AddItem(p, 1);
            Assert.AreEqual(1, cart.Items.Count);

            cart.RemoveItem("SKU");
            Assert.AreEqual(0, cart.Items.Count);
        }
Пример #9
0
        public void Items_Count_Should_Be_0_When_2_Items_Cleared()
        {
            ShoppingCart cart = new ShoppingCart("TEST");
            Product p = new Product("SKU");
            Product p2 = new Product("SKU2");
            //Clock-foolery
            cart.AddItem(p, 1);
            cart.AddItem(p2, 1);
            Assert.AreEqual(2, cart.Items.Count);

            cart.ClearItems();
            Assert.AreEqual(0, cart.Items.Count);
        }
Пример #10
0
 public void Items_Count_Should_Be_0_When_10_Items_Adjusted_To_Negative_10()
 {
     ShoppingCart cart = new ShoppingCart("TEST");
     Product p = new Product("SKU");
     cart.AddItem(p, 10);
     cart.AdjustQuantity(p, -10);
     Assert.AreEqual(0, cart.Items.Count);
 }
Пример #11
0
 public ShoppingCartItem(Product product, int quantity,DateTime dateAdded)
 {
     _product = product;
     _quantity = quantity;
     _dateAdded = dateAdded;
 }
Пример #12
0
 public InStock(Product item)
 {
     _item = item;
 }
Пример #13
0
 public OnPreOrder(Product item)
 {
     _item = item;
 }
Пример #14
0
 public OnBackOrder(Product item)
 {
     _item = item;
 }
Пример #15
0
        /// <summary>
        /// Adds a product to the cart
        /// </summary>
        public void AddItem(Product product, int quantity, DateTime dateAdded)
        {
            //see if this item is in the cart already
            ShoppingCartItem item = FindItem(product);

            if (quantity != 0) {
                if (item != null) {
                    //if the passed in amount is 0, do nothing
                    //as we're assuming "add 0 of this item" means
                    //do nothing
                    if (quantity != 0)
                        AdjustQuantity(product, item.Quantity);
                } else {
                    if (quantity > 0) {
                        item = new ShoppingCartItem(product, quantity, dateAdded);

                        //add to list
                        Items.Add(item);
                    }
                }

            }
        }
Пример #16
0
 /// <summary>
 /// Adds a product to the cart
 /// </summary>
 public void AddItem(Product product,int quantity)
 {
     AddItem(product, quantity,DateTime.Now);
 }
Пример #17
0
 /// <summary>
 /// Adds a product to the cart
 /// </summary>
 public void AddItem(Product product)
 {
     AddItem(product, 1);
 }
Пример #18
0
 public void Save(Product p)
 {
     productList.Add(p);
 }
Пример #19
0
 public void Nothing_Should_Be_Added_When_0_Passed_as_Quantity_To_AddItem()
 {
     ShoppingCart cart = new ShoppingCart("TEST");
     Product p = new Product("SKU");
     cart.AddItem(p, 0);
     Assert.AreEqual(0, cart.Items.Count);
 }
Пример #20
0
        public void Total_Should_Be_110_With_90_Subtotal_10_Tax_and_10_Shipping()
        {
            ShoppingCart cart = new ShoppingCart("TEST");
            Product p = new Product("SKU");
            p.Price = 90;
            cart.AddItem(p, 1);
            Assert.AreEqual(90, cart.SubTotal);

            cart.TaxAmount = 10;
            cart.ShippingAmount = 10;

            Assert.AreEqual(110, cart.Total);
        }
Пример #21
0
 public void ProductModel_Should_Set_Inventory_State_To_InStock_With_10_OnHand_And_DateAvailable_Now()
 {
     Product p = new Product("TEST","test","test",true, 10, 1, DateTime.Now.AddDays(-7), true,true);
     Assert.AreEqual(typeof(InStock), p.CurrentInventory.GetType());
 }
Пример #22
0
        /// <summary>
        /// Adjusts the quantity of an item in the cart
        /// </summary>
        public void AdjustQuantity(Product product, int newQuantity)
        {
            ShoppingCartItem itemToAdjust = FindItem(product);
            if (itemToAdjust != null) {
                if (newQuantity <= 0) {
                    this.RemoveItem(product);
                } else {
                    itemToAdjust.AdjustQuantity(newQuantity);
                }

            }
        }
Пример #23
0
 public void ProductModel_Should_Set_Inventory_State_To_Unavailable_With_0_OnHand_DateAvailable_And_Not_AllowBackOrder()
 {
     Product p = new Product("TEST", "test", "test", true, 10, 0, DateTime.Now.AddDays(-7), false, true);
     Assert.AreEqual(typeof(Unavailable), p.CurrentInventory.GetType());
 }
Пример #24
0
 /// <summary>
 /// Finds an item in the cart
 /// </summary>
 /// <param name="product"></param>
 /// <returns></returns>
 public ShoppingCartItem FindItem(Product product)
 {
     //see if this item is in the cart already
     return (from items in Items
             where items.Product.Equals(product)
             select items).SingleOrDefault();
 }
Пример #25
0
 /// <summary>
 /// Remmoves a product from the cart
 /// </summary>
 public void RemoveItem(Product product)
 {
     RemoveItem(product.SKU);
 }
Пример #26
0
 public void ProductModel_Should_Set_Inventory_State_To_PreOrder_With_10_OnHand_DateAvailable_Future()
 {
     Product p = new Product("TEST", "test", "test", true, 10, 10, DateTime.Now.AddDays(7), false, true);
     p.AllowPreOrder = true;
     Assert.AreEqual(typeof(OnPreOrder), p.CurrentInventory.GetType());
 }
Пример #27
0
 public Unavailable(Product item)
 {
     _item = item;
 }
Пример #28
0
 Product GetTestProduct()
 {
     var result = new Product("SKU", "Name", "Blurb", true, 100, 1, DateTime.Now, true, true);
     result.Price = 10M;
     return result;
 }
Пример #29
0
 public ShoppingCartItem(Product product)
     : this(product, 1,DateTime.Now)
 {
 }