Esempio n. 1
0
        public decimal CalculateNetPayableAmount(IBill bill)
        {
            var percentageDiscount = PercentageDiscountCalculator.ApplyDiscount(bill.Order);
            var fixedDiscount      = FixedDiscountCalculator.ApplyDiscount(bill.BillAmount - percentageDiscount);

            return(bill.BillAmount - percentageDiscount - fixedDiscount);
        }
Esempio n. 2
0
        public void CalculateTest()
        {
            // Arrange
            var order = new Order
            {
                Price     = 100,
                Quantity  = 2,
                OrderDate = DateTime.Parse("2018-03-06 14:00")
            };



            // Act
            IDiscountValidator  validator  = new HappyHourDiscountValidator(TimeSpan.FromHours(13), TimeSpan.FromHours(16));
            IDiscountCalculator calculator = new FixedDiscountCalculator(20);

            var orderCalculator = new OrderCalculator(validator, calculator);

            var amount = orderCalculator.Calculate(order);

            // Assert
            Assert.AreEqual(180, amount);
        }