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 ShouldCalculateDailyWage() { //GIVEN double workedHours = 8d; double overtimeHours = 0.57d; decimal employeeHourSalary = 10; labourSettings = new LabourSettings { DailyOvertimeMultiplier = 1.5, DailyOvertimeThreshold = 480, Overtime = true, WeeklyOvertimeMultiplier = 2, WeeklyOvertimeThreshold = 2400 }; //WHEN var calculator = new BasicWageCalculator(); var result = calculator.CalculateWage(workedHours, overtimeHours, employeeHourSalary, (decimal)labourSettings.DailyOvertimeMultiplier); //THEN Assert.IsNotNull(result); Assert.AreEqual(8.55m, result.OvertimeWage); Assert.AreEqual(80m, result.RegularWage); }