public void Get_Total_Amount_After_Discounts_With_Coupon_Should_Return_Correct_Price() { var calc = new Mock <IDeliveryCostCalculator>(); var shoppingCart = new Core.ShoppingCart(calc.Object); var couponDiscountAmount = 50; var tShirtCategory = new Category("TShirt"); var jacketCategory = new Category("Jacket"); var poloTShirt = new Product("Polo TShirt", 120, tShirtCategory); var kotonTShirt = new Product("Koton TShirt", 40, tShirtCategory); var lacosteTShirt = new Product("Lacoste TShirt", 220, tShirtCategory); var zaraJacket = new Product("Zara Jacket", 260, jacketCategory); shoppingCart.AddItem(poloTShirt, 2); shoppingCart.AddItem(kotonTShirt); shoppingCart.AddItem(lacosteTShirt); shoppingCart.AddItem(zaraJacket); var campaigns = new List <Discount>(); var coupon = new AmountCoupon(couponDiscountAmount, 300); shoppingCart.ApplyDiscounts(campaigns); shoppingCart.ApplyCoupon(coupon); var totalAmount = shoppingCart.GetTotalAmountAfterDiscounts(); // ( (120 * 2) + 40 + 220 ) + 260 => 760 - 50 => 710 Assert.True(totalAmount == shoppingCart.TotalItemPrice - couponDiscountAmount); }
public void Add_Item_With_Null_Object_Should_Return_Argument_Null_Exception() { var calc = new Mock <IDeliveryCostCalculator>(); var shoppingCart = new Core.ShoppingCart(calc.Object); Product product = null; Assert.Throws <ArgumentNullException>(() => shoppingCart.AddItem(product)); }
public void Apply_Coupon_With_Null_Object_Should_Return_Argument_Null_Exception() { var calc = new Mock <IDeliveryCostCalculator>(); var shoppingCart = new Core.ShoppingCart(calc.Object); Coupon coupon = null; Assert.Throws <ArgumentNullException>(() => shoppingCart.ApplyCoupon(coupon)); }
public void Remove_Item_With_Negative_Quantity_Should_Return_Argument_Exception() { var calc = new Mock <IDeliveryCostCalculator>(); var shoppingCart = new Core.ShoppingCart(calc.Object); var tShirtCategory = new Category("TShirt"); var poloTShirt = new Product("Polo TShirt", 120, tShirtCategory); Assert.Throws <ArgumentException>(() => shoppingCart.RemoveItem(poloTShirt, -3)); }
public void Apply_Coupon_Should_Add_The_Coupon_To_The_Cart() { var calc = new Mock <IDeliveryCostCalculator>(); var shoppingCart = new Core.ShoppingCart(calc.Object); var coupon = new AmountCoupon(50, 300); shoppingCart.ApplyCoupon(coupon); Assert.NotNull(shoppingCart.Coupon); }
public void Add_Item_With_Quantity_Should_Add_Correct_Amount_Of_Items_To_The_Cart() { var calc = new Mock <IDeliveryCostCalculator>(); var shoppingCart = new Core.ShoppingCart(calc.Object); var tShirtCategory = new Category("TShirt"); var poloTShirt = new Product("Polo TShirt", 120, tShirtCategory); shoppingCart.AddItem(poloTShirt, 3); Assert.True(shoppingCart.Items.Single(y => y.Product.Title == poloTShirt.Title).Quantity == 3); }
public void Add_Item_Should_Add_The_Item_To_The_Cart() { var calc = new Mock <IDeliveryCostCalculator>(); var shoppingCart = new Core.ShoppingCart(calc.Object); var tShirtCategory = new Category("TShirt"); var poloTShirt = new Product("Polo TShirt", 120, tShirtCategory); shoppingCart.AddItem(poloTShirt); Assert.Contains(shoppingCart.Items, y => y.Product.Title == poloTShirt.Title); }
public void Add_Item_Should_Increase_Quantity_If_The_Product_Is_Exist_In_The_Cart() { var calc = new Mock <IDeliveryCostCalculator>(); var shoppingCart = new Core.ShoppingCart(calc.Object); var tShirtCategory = new Category("TShirt"); var poloTShirt = new Product("Polo TShirt", 120, tShirtCategory); shoppingCart.AddItem(poloTShirt, 3); shoppingCart.AddItem(poloTShirt); Assert.True(shoppingCart.Items.Single(y => y.Product.Title == poloTShirt.Title).Quantity == 4); }
public void Remove_Item_With_Quantity_That_Is_More_Than_Whats_In_The_Cart_Should_Return_Zero() { var calc = new Mock <IDeliveryCostCalculator>(); var shoppingCart = new Core.ShoppingCart(calc.Object); var tShirtCategory = new Category("TShirt"); var poloTShirt = new Product("Polo TShirt", 120, tShirtCategory); shoppingCart.AddItem(poloTShirt); shoppingCart.RemoveItem(poloTShirt, 2); Assert.True(shoppingCart.Items.Single(y => y.Product.Title == poloTShirt.Title).Quantity == 0); }
public void Apply_Coupon_Should_Replace_The_Previous_Coupon_In_The_Cart() { var calc = new Mock <IDeliveryCostCalculator>(); var shoppingCart = new Core.ShoppingCart(calc.Object); var coupon = new AmountCoupon(50, 300); shoppingCart.ApplyCoupon(coupon); var coupon2 = new AmountCoupon(50, 200); shoppingCart.ApplyCoupon(coupon2); Assert.True(shoppingCart.Coupon.MinimumAmountToApply == 200); }
public void Apply_Discounts_Should_Not_Add_Any_Discount_To_The_Cart_If_No_Campaign_Is_Available() { var calc = new Mock <IDeliveryCostCalculator>(); var shoppingCart = new Core.ShoppingCart(calc.Object); var tShirtCategory = new Category("TShirt"); var poloTShirt = new Product("Polo TShirt", 100, tShirtCategory); var campaigns = new List <Discount>(); shoppingCart.AddItem(poloTShirt, 2); shoppingCart.ApplyDiscounts(campaigns); Assert.Null(shoppingCart.Campaign); }
public void Apply_Discounts_With_A_Campaign_That_Does_Not_Satisfy_Minimum_Product_Quantity_Should_Not_Add_The_Discount_To_The_Cart() { var calc = new Mock <IDeliveryCostCalculator>(); var shoppingCart = new Core.ShoppingCart(calc.Object); var tShirtCategory = new Category("TShirt"); var poloTShirt = new Product("Polo TShirt", 120, tShirtCategory); var campaigns = new List <Discount>(); shoppingCart.AddItem(poloTShirt); var tShirtCampaign = new RateCampaign(20, 2, tShirtCategory); campaigns.Add(tShirtCampaign); shoppingCart.ApplyDiscounts(campaigns); Assert.Null(shoppingCart.Campaign); }
public void Apply_Discounts_Should_Add_A_Discount_To_The_Cart_Which_Has_The_Maximum_Discount_Among_All_Campaigns() { var calc = new Mock <IDeliveryCostCalculator>(); var shoppingCart = new Core.ShoppingCart(calc.Object); var tShirtCategory = new Category("TShirt"); var poloTShirt = new Product("Polo TShirt", 100, tShirtCategory); var kotonTShirt = new Product("Koton TShirt", 40, tShirtCategory); var campaigns = new List <Discount>(); shoppingCart.AddItem(poloTShirt, 2); shoppingCart.AddItem(kotonTShirt, 5); var tShirtCampaign = new RateCampaign(10, 3, tShirtCategory); var tShirtCampaign2 = new AmountCampaign(100, 5, tShirtCategory); campaigns.Add(tShirtCampaign); campaigns.Add(tShirtCampaign2); shoppingCart.ApplyDiscounts(campaigns); Assert.True(shoppingCart.Campaign == tShirtCampaign2); }