public void TestConditialDiscount_MinUnitsOfProductX() { cart.AddProduct(store, 1, 6, false); cart.AddProduct(store, 2, 2, false); PurchaseBasket basket = cart.GetBasket(store); DiscountPolicy discountplc = new ConditionalProductDiscount(preCondition: preConditionsDict[CommonStr.DiscountPreConditions.NumUnitsOfProductAboveEqX], discount: 10, minUnits: 5, productId: 1); double discount = discountplc.CalcDiscount(basket); double expected = 6000; Assert.AreEqual(expected, discount); }
public void TestCompundDiscountPolicy_XOR() { cart.AddProduct(store, 1, 1, false); cart.AddProduct(store, 2, 7, false); PurchaseBasket basket = cart.GetBasket(store); DiscountPolicy minItemsBasketPolicy = new ConditionalBasketDiscount(preCondition: preConditionsDict[CommonStr.DiscountPreConditions.NumUnitsInBasketAboveEqX], discount: 20, minUnitsAtBasket: 7); DiscountPolicy MinUnitsProductPolicy = new ConditionalProductDiscount(preCondition: preConditionsDict[CommonStr.DiscountPreConditions.NumUnitsOfProductAboveEqX], discount: 30, minUnits: 1, productId: 1); List <DiscountPolicy> policies_lst = new List <DiscountPolicy>(); policies_lst.Add(minItemsBasketPolicy); policies_lst.Add(MinUnitsProductPolicy); DiscountPolicy compundDiscount = new CompundDiscount(CommonStr.DiscountMergeTypes.XOR, policies_lst); double discount = compundDiscount.CalcDiscount(basket); double expected = 3000; Assert.AreEqual(expected, discount); }