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); }