public ShiftDTO CalculateEarning() { switch (this.DayOfWeek) { case DayOfWeek.Saturday: var saturdayEarningOptions = new SaturdayEarningOptions(TotalHoursWorked, OvertimeHoursWorked, OvertimeLateHoursWorked, WageBase); ShiftEarning = PayslipCalculator.CalculateSaturdayEarning(saturdayEarningOptions); break; case DayOfWeek.Sunday: var sundayEarningOptions = new SundayEarningOptions(TotalHoursWorked, OvertimeHoursWorked, WageBase); ShiftEarning = PayslipCalculator.CalculateSundayEarning(sundayEarningOptions); break; default: var weekdayEarningOptions = new WeekdayEarningOptions (NormalHoursWorked, After6PmHoursWorked, OvertimeHoursWorked, OvertimeLateHoursWorked, After6PmAndOvertimeHoursWorked, WageBase); ShiftEarning = PayslipCalculator.CalculateWeekdayEarning(weekdayEarningOptions); break; } return(this); }
public ShiftDTO CalculateHoursWorked() { //no break version if (this.HasBreak == false) { TotalHoursWorked = PayslipCalculator.CalculateTotalHoursWorked(StartedAt, EndedAt); OvertimeHoursWorked = PayslipCalculator.CalculateOvertimeHoursWorked(StartedAt, EndedAt); OvertimeLateHoursWorked = PayslipCalculator.CalculateOvertimeLateHoursWorked(StartedAt, EndedAt); After6PmHoursWorked = PayslipCalculator.CalculateAfter6PmHours(StartedAt, EndedAt); After6PmAndOvertimeHoursWorked = PayslipCalculator.CalculateAfter6PmAndOvertimeHoursWorked(StartedAt, EndedAt); NormalHoursWorked = PayslipCalculator.CalculateNormalHoursWorked(StartedAt, EndedAt); } else //break version { DateTime breakStartTime = BreakStartedAt.GetValueOrDefault(); DateTime breakEndTime = BreakEndedAt.GetValueOrDefault(); BreakHours = PayslipCalculator.CalculateHours(breakStartTime, breakEndTime); TotalHoursWorked = PayslipCalculator.CalculateTotalHoursWorked(StartedAt, EndedAt, breakStartTime, breakEndTime); OvertimeHoursWorked = PayslipCalculator.CalculateOvertimeHoursWorked(StartedAt, EndedAt, breakStartTime, breakEndTime); OvertimeLateHoursWorked = PayslipCalculator.CalculateOvertimeLateHoursWorked(StartedAt, EndedAt, breakStartTime, breakEndTime); After6PmHoursWorked = PayslipCalculator.CalculateAfter6PmHours(StartedAt, EndedAt, breakStartTime, breakEndTime); After6PmAndOvertimeHoursWorked = PayslipCalculator.CalculateAfter6PmAndOvertimeHoursWorked(StartedAt, EndedAt, breakStartTime, breakEndTime); NormalHoursWorked = PayslipCalculator.CalculateNormalHoursWorked(StartedAt, EndedAt, breakStartTime, breakEndTime); } return(this); }
public void GivenFirstAndLastNameShouldFormatIntoFullName(string firstName, string lastName, string expectedName) { var user = Mock.Of <User>(u => u.Name == firstName && u.Surname == lastName && u.Salary == 0 && u.EndDate == "" && u.StartDate == "" && u.SuperRate == 0); var payslipGenerator = new PayslipCalculator(_calculator.Object, new DateValidator()); var payslip = payslipGenerator.GeneratePayslip(user); Assert.Equal(expectedName, payslip.Fullname); }
public void CalculateIncomeTax_VariousIncomesAndPeriods_Calculated(double grossIncome, int payPeriods, double tax) { var expected = tax; var actual = PayslipCalculator.CalculateIncomeTax(grossIncome, payPeriods); Assert.Equal(expected, actual); }
public void calculateIncomeTax_calculatesIncomeTax_correctly(int testSalary, decimal expectedIncomeTax) { PayslipCalculator payslipCalculator = new PayslipCalculator(); decimal actualIncomeTax = payslipCalculator.CalculateIncomeTax(testSalary); Assert.Equal(expectedIncomeTax, actualIncomeTax); }
public void calculateSuperPaid_calculatesSuperPaid_correctly() { var payslipCalculator = new PayslipCalculator(); var testEmployee = new Employee("John Smith", 60050, 0.09m, "March 1", "March 31"); var expectedSuperPaid = 450; var actualSuperPaid = payslipCalculator.CreatePayslip(testEmployee).SuperPaid; Assert.Equal(expectedSuperPaid, actualSuperPaid); }
public void calculateGrossIncome_calculatesGrossIncome_correctly() { var payslipCalculator = new PayslipCalculator(); var testEmployee = new Employee("John Smith", 60050, 0.09m, "March 1", "March 31"); var expectedGrossIncome = 5004; var actualGrossIncome = payslipCalculator.CreatePayslip(testEmployee).GrossIncome; Assert.Equal(expectedGrossIncome, actualGrossIncome); }
public void CalculatePayPeriods_SameMonth_Calculated() { const int expected = 1; var startDate = new DateTime(2020, 3, 1); var endDate = new DateTime(2020, 3, 31); var actual = PayslipCalculator.CalculatePayPeriods(startDate, endDate); Assert.Equal(expected, actual); }
public void GivenGrossIncomeAndSuperRateShouldCalculateSuper(int salary, int superRate, int expectedSuper) { var user = Mock.Of <User>(u => u.Name == "" && u.Surname == "" && u.Salary == salary && u.EndDate == "" && u.StartDate == "" && u.SuperRate == superRate); _calculator.Setup(c => c.CalculateSuper(It.IsAny <int>(), It.IsAny <int>())).Returns(expectedSuper); var payslipGenerator = new PayslipCalculator(_calculator.Object, new DateValidator()); var payslip = payslipGenerator.GeneratePayslip(user); Assert.Equal(expectedSuper, payslip.Super); }
public void GeneratePayslip() { var inputDetails = _inputOutput.GetInputDetails(); var payslip = new Payslip(); var payslipCalculator = new PayslipCalculator(); payslip.FullName = payslipCalculator.JoinFirstAndLastNames(inputDetails.FirstName, inputDetails.LastName); payslip.PayPeriod = payslipCalculator.CalculatePayPeriod(inputDetails.StartDate, inputDetails.EndDate); payslip.GrossIncome = payslipCalculator.CalculateGrossIncome(inputDetails.AnnualSalary); payslip.IncomeTax = payslipCalculator.CalculateIncomeTax(inputDetails.AnnualSalary); payslip.NetIncome = payslipCalculator.CalculateNetIncome(payslip.GrossIncome, payslip.IncomeTax); payslip.Super = payslipCalculator.CalculateSuper(payslip.GrossIncome, inputDetails.SuperRate); _inputOutput.OutputPayslip(payslip); }
public void GivenExceptionThrownShouldCreateEmptyPayslip() { var user = Mock.Of <User>(u => u.Name == "" && u.Surname == "" && u.Salary == -1 && u.EndDate == "" && u.StartDate == "" && u.SuperRate == 0); _calculator.Setup(c => c.CalculateIncomeTax(It.IsAny <int>())).Throws <Exception>(); var payslipGenerator = new PayslipCalculator(_calculator.Object, new DateValidator()); var payslip = payslipGenerator.GeneratePayslip(user); Assert.Null(payslip.Fullname); Assert.Equal(0, payslip.GrossIncome); Assert.Equal(0, payslip.IncomeTax); Assert.Equal(0, payslip.NetIncome); Assert.Equal(0, payslip.Super); }
public static string GetPayslip(string input) { var inputProcessor = new InputProcessor(); var payslipGenerator = new PayslipCalculator(); var outputProcessor = new OutputProcessor(); //InputProcessor will split the required Input from string payslipInput = inputProcessor.Process(input); //Payslip Generator internally will calculate tax and create tax table to prepare payslip payslipInfo = payslipGenerator.Calculate(payslipInput); //OutputProcessor will join the output in string return(outputProcessor.Process(payslipInfo)); }
public void PayslipCalculatorTest() { string Input = "David,Rudd,60050,9%,01 March – 31 March"; string Expected = "David Rudd,01 March – 31 March,5004,922,4082,450"; string Actual; PayslipInput payslipInput; PayslipInfo payslipInfo; var inputProcessor = new InputProcessor(); var payslipCalculator = new PayslipCalculator(); var outputProcessor = new OutputProcessor(); payslipInput = inputProcessor.Process(Input); payslipInfo = payslipCalculator.Calculate(payslipInput); Actual = outputProcessor.Process(payslipInfo); Assert.AreEqual(Expected, Actual); }
public PayslipCalculatorTest() { _payslipCalculator = new PayslipCalculator(); }
public void Entering_Salary_Details_Returns_Gross_Income() { var payslipCalculator = new PayslipCalculator(new SalaryDetails(60050, 9)); Assert.Equal(5004, payslipCalculator.GetGrossIncome()); }
public void Entering_Salary_Details_Returns_Super() { var payslipCalculator = new PayslipCalculator(new SalaryDetails(60050, 9)); Assert.Equal(450, payslipCalculator.GetSuper()); }
public void Entering_Salary_Details_Returns_Net_Income() { var payslipCalculator = new PayslipCalculator(new SalaryDetails(60050, 9)); Assert.Equal(4082, payslipCalculator.GetNetIncome()); }