Пример #1
0
        public void BreadIsNotHalfOffWithOneBeans()
        {
            var offer   = new TwoBeansIsBreadHalfOffOffer();
            var success = offer.TryApplyDiscount(new[] { Bread(), Beans() }, out var discount);

            success.Should().BeFalse();
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }