public void BreadIsNotHalfOffWithOneBeans() { var offer = new TwoBeansIsBreadHalfOffOffer(); var success = offer.TryApplyDiscount(new[] { Bread(), Beans() }, out var discount); success.Should().BeFalse(); }
public void OnlyAppliesOnceEvenWithLotsOfBread() { var offer = new TwoBeansIsBreadHalfOffOffer(); var success = offer.TryApplyDiscount(new[] { Bread(), Bread(), Bread(), Beans(), Beans(), Bread() }, out var discount); success.Should().BeTrue(); discount.BaseAmount.Should().Be(breadPrice * 0.5m); discount.TimesApplied.Should().Be(1); }
public void MultipleBreadsCanAllBeHalfOff() { var offer = new TwoBeansIsBreadHalfOffOffer(); var success = offer.TryApplyDiscount(new[] { Bread(), Beans(), Beans(), Beans(), Beans(), Bread() }, out var discount); success.Should().BeTrue(); discount.BaseAmount.Should().Be(breadPrice * 0.5m); discount.TimesApplied.Should().Be(2); }