コード例 #1
0
ファイル: ShoppingCartTests.cs プロジェクト: JawariSanga/Main
 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
ファイル: ShoppingCartTests.cs プロジェクト: JawariSanga/Main
 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
ファイル: ShoppingCartTests.cs プロジェクト: JawariSanga/Main
 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
ファイル: ShoppingCartTests.cs プロジェクト: JawariSanga/Main
        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
ファイル: ShoppingCartTests.cs プロジェクト: JawariSanga/Main
 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
ファイル: ShoppingCartTests.cs プロジェクト: JawariSanga/Main
        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
ファイル: ShoppingCartTests.cs プロジェクト: JawariSanga/Main
        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
ファイル: ShoppingCartTests.cs プロジェクト: JawariSanga/Main
 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
ファイル: ShoppingCartItem.cs プロジェクト: JawariSanga/Main
 public ShoppingCartItem(Product product, int quantity,DateTime dateAdded)
 {
     _product = product;
     _quantity = quantity;
     _dateAdded = dateAdded;
 }
コード例 #12
0
ファイル: InStock.cs プロジェクト: JawariSanga/Main
 public InStock(Product item)
 {
     _item = item;
 }
コード例 #13
0
ファイル: OnPreOrder.cs プロジェクト: JawariSanga/Main
 public OnPreOrder(Product item)
 {
     _item = item;
 }
コード例 #14
0
 public OnBackOrder(Product item)
 {
     _item = item;
 }
コード例 #15
0
ファイル: ShoppingCart.cs プロジェクト: JawariSanga/Main
        /// <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
ファイル: ShoppingCart.cs プロジェクト: JawariSanga/Main
 /// <summary>
 /// Adds a product to the cart
 /// </summary>
 public void AddItem(Product product,int quantity)
 {
     AddItem(product, quantity,DateTime.Now);
 }
コード例 #17
0
ファイル: ShoppingCart.cs プロジェクト: JawariSanga/Main
 /// <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
ファイル: ShoppingCartTests.cs プロジェクト: JawariSanga/Main
 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
ファイル: ShoppingCartTests.cs プロジェクト: JawariSanga/Main
        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
ファイル: ProductTests.cs プロジェクト: JawariSanga/Main
 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
ファイル: ShoppingCart.cs プロジェクト: JawariSanga/Main
        /// <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
ファイル: ProductTests.cs プロジェクト: JawariSanga/Main
 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
ファイル: ShoppingCart.cs プロジェクト: JawariSanga/Main
 /// <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
ファイル: ShoppingCart.cs プロジェクト: JawariSanga/Main
 /// <summary>
 /// Remmoves a product from the cart
 /// </summary>
 public void RemoveItem(Product product)
 {
     RemoveItem(product.SKU);
 }
コード例 #26
0
ファイル: ProductTests.cs プロジェクト: JawariSanga/Main
 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
ファイル: ProductTests.cs プロジェクト: JawariSanga/Main
 Product GetTestProduct()
 {
     var result = new Product("SKU", "Name", "Blurb", true, 100, 1, DateTime.Now, true, true);
     result.Price = 10M;
     return result;
 }
コード例 #29
0
ファイル: ShoppingCartItem.cs プロジェクト: JawariSanga/Main
 public ShoppingCartItem(Product product)
     : this(product, 1,DateTime.Now)
 {
 }