public decimal CalculateNetPayableAmount(IBill bill) { var percentageDiscount = PercentageDiscountCalculator.ApplyDiscount(bill.Order); var fixedDiscount = FixedDiscountCalculator.ApplyDiscount(bill.BillAmount - percentageDiscount); return(bill.BillAmount - percentageDiscount - fixedDiscount); }
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); }