public void Should_GetDiscount_With_MinOperation_Mins_Discounts() { var sut = new DiscountStrategyCalculator <Order>(DiscountStrategyOperations.Min); sut.Configure() .When(_ => true) .ApplyDiscount(_ => 20m) .When(_ => true) .ApplyDiscount(_ => 60m); var discount = sut.GetDiscount(new Order(Arg.Any <string>(), Arg.Any <string>(), 0.0725m)); Assert.That(discount, Is.EqualTo(20m)); }
public void Should_AddCalculator_Compose_With_Itself() { var calculator = new DiscountStrategyCalculator <Order>(DiscountStrategyOperations.Sum); var otherCalculator = new DiscountStrategyCalculator <Order>(); calculator.Configure() .When(_ => true) .ApplyDiscount(_ => 42m); otherCalculator.Configure() .When(_ => true) .ApplyDiscount(_ => 42m); calculator.AddCalculator(otherCalculator); Assert.That( calculator.GetDiscount(new Order(Arg.Any <string>(), Arg.Any <string>(), 0.0725m)), Is.EqualTo(84m)); }