public void TestSpecialDiscountEngineStrategy_CrazySalesDayFirstTier() { _marketingCampaignMock.IsCrazySalesDay().Returns(true); _marketingCampaignMock.IsActive().Returns(false); var itemDiscountStrategy = _engineDiscountStrategy.GetDiscountStrategy(Arg.Any <Money>(), _marketingCampaignMock); Assert.True(itemDiscountStrategy.GetType().Name == typeof(FirstTierDiscountStrategy).Name); }
public IItemDiscountStrategy GetDiscountStrategy(Money price, IMarketingCampaign marketingCampaign) { if (marketingCampaign.IsCrazySalesDay()) { return(new FirstTierDiscountStrategy()); } if (price > Money.OneThousand) { return(new SecondTierDiscountStrategy()); } if (price > Money.OneHundred && marketingCampaign.IsActive()) { return(new ThirdTierDiscountStrategy()); } return(new NoDiscountStrategy()); }
public static IDiscount Create(IMarketingCampaign campaign, IMoney money) { if (campaign.IsCrazySalesDay()) { return(new DiscountCrazySalesDay()); } if (money.IsMoreThanOneThousand()) { return(new DiscountOneThousand()); } if (money.IsMoreThanOneHundred() && campaign.IsActive()) { return(new DiscountOneHundred()); } return(new DiscountNoDiscount()); }