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 Calculate2DiscountTest() { // Arrange ICanDiscountStrategy canDiscountStrategy = new HappyHoursCanDiscountStrategy( TimeSpan.Parse("12:30"), TimeSpan.Parse("14:00")); IDiscountStrategy discountStrategy = new FixedDiscountStrategy(5); OrderCalculator orderCalculator = new OrderCalculator(canDiscountStrategy, discountStrategy); Order order = new Order("ZAM 001/2018", new Customer("M", "S")); order.CreateDate = DateTime.Parse("2018-06-19 12:30"); Product product1 = new Product("Monitor", 1000); order.Details.Add(new OrderDetail(product1, 10)); // Acts decimal discount = orderCalculator.CalculateDiscount(order); // Asserts Assert.AreEqual(5, discount); }
public void HappyHoursTest() { // Arrange Customer customer = new Customer("Marcin", "Sulecki"); var order = new Order(customer) { OrderNumber = "ZAM 001/2018", OrderDate = DateTime.Parse("2018-03-26 15:00") }; var monitor = new Product("Monitor", 200); var keboard = new Product("Keyboard", 199); var develop = new Service("Programowanie", 100); order.Details.Add(new OrderDetail(keboard)); order.Details.Add(new OrderDetail(monitor, 2)); order.Details.Add(new OrderDetail(develop, 5)); //IPromotionStrategy strategy = new HappyHoursPromotionStrategy( // TimeSpan.FromHours(9), // TimeSpan.FromHours(16), // 0.1m); IDiscountValidator discountValidator = new HappyHoursDiscountValidator( TimeSpan.FromHours(9), TimeSpan.FromHours(16)); IDiscountCalculator discountCalculator = new PercentageDiscountCalculator(0.1m); var calculator = new OrderCalculator(discountValidator, discountCalculator); calculator.Log += LogToConsole; calculator.Log += LogToTrace; calculator.Log += Console.WriteLine; // metoda anonimowa calculator.Log += delegate(string message) { Console.WriteLine(message); }; calculator.Log += message => Console.WriteLine(message); calculator.Log -= LogToConsole; var listeners = calculator.Log.GetInvocationList().ToList(); calculator.Log = null; // Acts var totalAmount = order.TotalAmount; var discountAmount = calculator.CalculateDiscount(order); // Assert Assert.AreEqual(1099, totalAmount); Assert.AreEqual(109.9m, discountAmount); Assert.IsNotNull(order.Customer); Assert.IsNotNull(order.OrderNumber); Assert.AreEqual(3, order.Details.Count); }