public void TestConditionalDiscoun_NoDiscount() { cart.AddProduct(store, 1, 2, false); cart.AddProduct(store, 2, 2, false); PurchaseBasket basket = cart.GetBasket(store); DiscountPolicy discountplc = new ConditionalBasketDiscount(preCondition: preConditionsDict[CommonStr.DiscountPreConditions.NoDiscount], discount: 0); double discount = discountplc.CalcDiscount(basket); double expected = 0; Assert.AreEqual(expected, discount); }
public void TestConditionalDiscount_MinItemsAtBasket() { cart.AddProduct(store, 1, 1, false); cart.AddProduct(store, 2, 2, false); PurchaseBasket basket = cart.GetBasket(store); DiscountPolicy discountplc = new ConditionalBasketDiscount(preCondition: preConditionsDict[CommonStr.DiscountPreConditions.NumUnitsInBasketAboveEqX], discount: 20, minUnitsAtBasket: 2); double discount = discountplc.CalcDiscount(basket); double expected = 1090 * 2; Assert.AreEqual(expected, discount); }
public void TestConditionalDiscount_BasketPrdouctPriceAboveX() { cart.AddProduct(store, 1, 2, false); cart.AddProduct(store, 2, 2, false); PurchaseBasket basket = cart.GetBasket(store); DiscountPolicy discountplc = new ConditionalBasketDiscount(preCondition: preConditionsDict[CommonStr.DiscountPreConditions.BasketProductPriceAboveEqX], discount: 10, minProductPrice: 10000); double discount = discountplc.CalcDiscount(basket); double expected = 2000; 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); }