public void ShouldCalculateWeeklyWageWithoutOvertime()
        {
            decimal employeeHourSalary = 10;

            //GIVEN
            punches = TimePunchesMock.GetThreeWeeksFromEmployee().ToList();

            labourSettings = new LabourSettings
            {
                DailyOvertimeMultiplier = 1.5,
                DailyOvertimeThreshold  = 480,
                Overtime = true,
                WeeklyOvertimeMultiplier = 2,
                WeeklyOvertimeThreshold  = 2400
            };

            //WHEN
            var hourCalculator       = new WorkedHourCalculator(new BasicWageCalculator());
            var calculationResults   = hourCalculator.CalculateWorkedWeek(punches, labourSettings, user).ToArray();
            var wageCalculator       = new BasicWageCalculator();
            var weeklyCalculatedWage = wageCalculator.CalculateWage(calculationResults[0].TotalRegularHours, calculationResults[0].TotalWeekOverTime, employeeHourSalary, (decimal)labourSettings.WeeklyOvertimeMultiplier);
            var dailyCalculatedWage  = wageCalculator.CalculateWage(calculationResults[0].TotalRegularHours, calculationResults[0].TotalDailyOverTime, employeeHourSalary, (decimal)labourSettings.DailyOvertimeMultiplier);

            //THEN

            Assert.IsNotNull(weeklyCalculatedWage);
            Assert.AreEqual(0.0m, weeklyCalculatedWage.OvertimeWage);
            Assert.AreEqual(38.55m, dailyCalculatedWage.OvertimeWage);
            Assert.AreEqual(160m, weeklyCalculatedWage.RegularWage);
        }
        public void ShoudValidateWeeklyTimePunchWithWeekOvertime()
        {
            //GIVEN
            punches = TimePunchesMock.GetThreeWeeksFromEmployee().ToList();

            labourSettings = new LabourSettings
            {
                DailyOvertimeMultiplier = 1.5,
                DailyOvertimeThreshold  = 480,
                Overtime = true,
                WeeklyOvertimeMultiplier = 2,
                WeeklyOvertimeThreshold  = 2400
            };

            //WHEN
            var calculator        = new WorkedHourCalculator(new BasicWageCalculator());
            var calculationResult = calculator.CalculateWorkedWeek(punches, labourSettings, user).ToArray();

            //THEN
            Assert.IsNotNull(calculationResult);
            Assert.AreEqual(2, calculationResult.Count());
            Assert.IsTrue(calculationResult[1].TotalWeekOverTime > 0);
        }