public void CalculatorExecutionTest()
        {
            // Arrange

            ICanDiscountStrategy canDiscountStrategy
                = new DayOfWeekCanDiscountStrategy(DayOfWeek.Friday);

            ICalculateDiscountStrategy calculateDiscountStrategy
                = new PercentageCalculateDiscountStrategy(0.5m);


            IDiscountCalculator discountCalculator
                = new DiscountCalculator(canDiscountStrategy, calculateDiscountStrategy);

            Order order = CreateOrderWith1Product("2019-10-18", 1000);

            // Act
            Action act = () => discountCalculator.CalculateDiscount(order);

            // Asserts
            act
            .ExecutionTime()
            .Should()
            .BeLessOrEqualTo(500.Milliseconds());
        }
        public void DayOfWeekStrategyCanDiscountTest()
        {
            ICanDiscountStrategy discountStrategy
                = new DayOfWeekCanDiscountStrategy(DayOfWeek.Friday);

            Order order = CreateOrderWith1Product("2019-10-18", 1000);

            bool canDiscount = discountStrategy.CanDiscount(order);

            canDiscount.Should().Be(true);
        }
        public void DayOfWeekStrategyTest(string date, bool expected)
        {
            ICanDiscountStrategy discountStrategy
                = new DayOfWeekCanDiscountStrategy(DayOfWeek.Friday);

            Order order = CreateOrderWith1Product(date, 1000);

            bool result = discountStrategy.CanDiscount(order);

            result.Should().Be(expected);
        }
        private static DiscountCalculator CreateDiscountCalculator()
        {
            ICanDiscountStrategy canDiscountStrategy
                = new DayOfWeekCanDiscountStrategy(DayOfWeek.Friday);

            ICalculateDiscountStrategy calculateDiscountStrategy
                = new PercentageCalculateDiscountStrategy(0.5m);

            var discountCalculator
                = new DiscountCalculator(canDiscountStrategy, calculateDiscountStrategy);

            return(discountCalculator);
        }