public void Verify_AxilCustomer_Total(string name, decimal expected) { var adFactory = new AdFactory(); var discountStrategyFactory = new DiscountStrategyFactory(); var item1 = adFactory.CreateAd(typeof(StandoutAd)); var item2 = adFactory.CreateAd(typeof(StandoutAd)); var item3 = adFactory.CreateAd(typeof(StandoutAd)); var item4 = adFactory.CreateAd(typeof(PremiumAd)); var customer = new Customer(name); var discountStrategy = discountStrategyFactory.GetDiscountStrategy(customer); var pricingRules = discountStrategy.GetPricingRules(); var checkout = new Domain.Checkout(pricingRules); checkout.Add(item1); checkout.Add(item2); checkout.Add(item3); checkout.Add(item4); Assert.Equal(expected, checkout.Total()); }
public Basket(EDiscountType discountType) { _products = new List <Product>(); // Here the discount strategy is defined, according to a desired kind of discount type. _discountStrategy = DiscountStrategyFactory.DiscountStrategyFor(discountType); }
/// <summary> /// Defines a discount type to be applied over all products of basket. /// </summary> /// <param name="discountType">Discount type which will be applied over the products list.</param> public void SetDiscountType(EDiscountType discountType) { _discountStrategy = DiscountStrategyFactory.DiscountStrategyFor(discountType); }