public void IgnoresUpcomingDiscountCode()
        {
            const decimal orderTotal = 100.0m;
            var           applier    = new DiscountCodeApplier(UpcomingDiscountCode(10.0m));

            Assert.AreEqual(100.0m, applier.DiscountedTotal(orderTotal));
        }
        public void IgnoresInactiveDiscountCode()
        {
            const decimal orderTotal = 100.0m;
            var           applier    = new DiscountCodeApplier(DiscountCode(10.0m, false));

            Assert.AreEqual(100.0m, applier.DiscountedTotal(orderTotal));
        }
        public void DiscountedTotalFromPercentageCannotBeLessThanZero()
        {
            const decimal orderTotal = 100.0m;
            var           applier    = new DiscountCodeApplier(PercentageDiscountCode(110.0m));

            Assert.AreEqual(0.0m, applier.DiscountedTotal(orderTotal));
        }
        public void CalculatesDiscountTotalFromPercentage()
        {
            const decimal orderTotal = 150.0m;
            var           applier    = new DiscountCodeApplier(PercentageDiscountCode(20.0m));

            Assert.AreEqual(120.0m, applier.DiscountedTotal(orderTotal));
        }
        public void CalculatesDiscountTotal()
        {
            const decimal orderTotal = 100.0m;
            var           applier    = new DiscountCodeApplier(DiscountCode(10.0m));

            Assert.AreEqual(90.0m, applier.DiscountedTotal(orderTotal));
        }
        public void AppliesAdjustment()
        {
            const decimal orderTotal = 100.0m;
            var           applier    = new DiscountCodeApplier(DiscountCode(10.0m));
            var           adjustment = applier.DiscountAdjustment(orderTotal);

            Assert.IsNotNull(adjustment);
            Assert.AreEqual(-10.0m, adjustment.Amount);
        }