public void GetCouponDiscount_GiveCorrectCouponDiscountAmount() { // jean: 50 x 10 = 500 // apple: 2 x 50 = 100 _shoppingCart.AddItem(jean, 10); _shoppingCart.AddItem(apple, 50); coupon = new Coupon(300, 50, DiscountType.Rate); _shoppingCart.ApplyCoupon(coupon); _shoppingCart.GetTotalAmountAfterDiscounts(); double couponDiscount = _shoppingCart.GetCouponDiscount(); Assert.Equal(300, couponDiscount); }
public void Run() { Category electronic = new Category(CategoryType.Electronic); Category book = new Category(CategoryType.Books); Product television = new Product("Television", 1000, electronic); Product essentialCSharp = new Product("TestBook", 400, book); _shoppingCart.AddProduct(television, 6); _shoppingCart.AddProduct(essentialCSharp, 5); Coupon coupon = CouponFactory.GenerateCoupon(1000, 20, CouponType.Rate); // I have created 2 discounts type for electronic and book categories. // the expectation is to find the best discount option in the same category. Campaign campaign3 = CampaignFactory.GenerateCampaign(electronic, 5, 50, DiscountType.Rate); Campaign campaign = CampaignFactory.GenerateCampaign(electronic, 2, 20, DiscountType.Rate); Campaign campaign2 = CampaignFactory.GenerateCampaign(book, 2, 5, DiscountType.Amount); Campaign campaign4 = CampaignFactory.GenerateCampaign(book, 4, 15, DiscountType.Amount); Campaign[] campaigns = { campaign2, campaign, campaign3, campaign4 }; _shoppingCart.ApplyCampaigns(campaigns); _shoppingCart.ApplyCoupon(coupon); _shoppingCart.Print(); var deliveryCost = _costCalculator.CalculateCost(50, 2, _shoppingCart); var totalCartAmount = _shoppingCart.GetTotalAmount(); var appliedCampaignDiscount = _shoppingCart.GetCampaignDiscount(); var appliedCouponDiscount = _shoppingCart.GetCouponDiscount(); WriteSummaryText(deliveryCost, totalCartAmount, appliedCampaignDiscount, appliedCouponDiscount); }