public void Should_Throw_ArgumentOutOfRangeException(DateTime currentDate, Enums.SalaryFrequency salaryFrequency, int day, int maxValue)
        {
            var paymentDateCalculator = new PaymentDateCalculator(currentDate);

            Action act = () => paymentDateCalculator.CalculateNextSalaryDate(new SalaryDateCalculation
            {
                SalaryFrequency = salaryFrequency,
                Day             = day
            });

            act.Should().Throw <ArgumentOutOfRangeException>()
            .WithMessage($"Day must be bigger than 0 and smaller than { maxValue }. (Parameter 'day')\nActual value was { day }.");
        }
        public void Should_Throw_NotSupportedException()
        {
            var paymentDateCalculator = new PaymentDateCalculator(DateTime.Now);

            var salaryFrequency = (SalaryFrequency)99;

            Action act = () => paymentDateCalculator.CalculateNextSalaryDate(new SalaryDateCalculation
            {
                SalaryFrequency = salaryFrequency
            });

            act.Should().Throw <NotSupportedException>()
            .WithMessage($"{salaryFrequency} is not supported.");
        }
        public void Should_Pass_All_TestData_CalculateNextSalaryDate
        (
            DateTime currentDate,
            IEnumerable <Holiday> holidays,
            Enums.SalaryFrequency salaryFrequency,
            int day,
            DateTime expectedDate
        )
        {
            var paymentDateCalculator = new PaymentDateCalculator(currentDate, holidays);

            var nextSalaryPaymentDate = paymentDateCalculator.CalculateNextSalaryDate(new SalaryDateCalculation
            {
                SalaryFrequency = salaryFrequency,
                Day             = day
            });

            nextSalaryPaymentDate.Should().Be(expectedDate);
        }
        //"dto":{"Day":2,"Week":0,"CurrentDate":"3.07.2017","PaymentFrequency":"FirstXDay"}
        //
        public object Index(SalaryDateCalculationDTO dto)
        {
            PaymentDateCalculator calculator = new PaymentDateCalculator();

            return(calculator.CalculateNextSalaryDate(dto));
        }
        public string Get(SalaryDateCalculationDTO dto)
        {
            PaymentDateCalculator calculator = new PaymentDateCalculator();

            return(calculator.CalculateNextSalaryDate(dto).ToString());
        }