public static void Test() { Product product1 = new Product { Name = "Szkolenie", UnitPrice = 100, }; Order order = new Order { Details = new List<OrderDetail> { new OrderDetail(product1, 2), new OrderDetail(product1, 1), } }; // IValidatorStrategy validatorStrategy = new HappyHoursValidatorStrategy(TimeSpan.FromHours(9), TimeSpan.FromHours(17)); IValidatorStrategy validatorStrategy = new PeriodValidatorStrategy(new Period(DateTime.Parse("2018-06-01"), DateTime.Parse("2018-06-30"))); IDiscountStrategy discountStrategy = new PercentageDiscountStrategy(0.1m); OrderCalculator calculator = new OrderCalculator(validatorStrategy, discountStrategy); var discount = calculator.CalculateDiscount(order); var finalAmount = order.TotalAmount - discount; Console.WriteLine($"Original amount: {order.TotalAmount} discount: {discount} finalAmount: {finalAmount}"); }
public void CalculateDiscount3Test() { // Arrange Customer customer = new Customer(1, "Sulecki"); Order order = Order.Create(customer); order.OrderDate = DateTime.Parse("2018-09-14"); Product product = new Product("Mouse", 100, "Red"); Service service = new Service("Developing", 100); order.AddDetail(new OrderDetail(product, 10)); order.AddDetail(new OrderDetail(service, 4)); ICanDiscountStrategy canDiscount = new OverLimitDiscountStrategy(1000); IDiscountStrategy discount = new PercentageDiscountStrategy(0.1m); IOrderCalculator calculator = new OrderCalculator2(canDiscount, discount); // Acts decimal result = calculator.Calculate(order); // Asserts Assert.True(result > 0); Assert.Equal(1260, result); // Polecam: Install-Package FluentAssertions }
public void OrderDiscountCalculatorTest() { // Arrange AddArticlesTest(); Customer customer = new Customer(); Article product1 = articlesService.Get(1); Order order = new Order("ZAM 1/2018", customer); order.OrderDate = DateTime.Parse("2018-04-13"); order.AddArticle(product1, 2); IRuleStrategy ruleStrategy = new HappyDayRuleStrategy(DayOfWeek.Friday); //IRuleStrategy<Order> ruleStrategy // = new DelegateRuleStrategy<Order>(o => o.OrderDate.DayOfWeek == DayOfWeek.Friday); IDiscountStrategy discountStrategy = new PercentageDiscountStrategy(0.3m); OrderDiscountCalculator calculator = new OrderDiscountCalculator(ruleStrategy, discountStrategy); // Acts calculator.Calculate(order); // Assets Assert.AreEqual(6, order.DiscountAmount); Assert.IsTrue(order.HasDiscount); }
public void ShouldDiscountPercentage() { long price = 1000; percentageDiscountStrategy = new PercentageDiscountStrategy(price); long discount = percentageDiscountStrategy.Discount(); Assert.Equal(150, discount); }
public void PercentageDiscount_WhenInitialAmountIs_100_And_20PercentDiscountProvided_ThenReturn80() { // Arrange var pricingStrategy = new PercentageDiscountStrategy(20); var sale = new Sale(100, pricingStrategy); // Act var total = sale.GetTotal(); // Assert total.Should().Be(80); }