public void PayIntervalShouldMatchPaycheckCount() { var expectedPaycheckCounts = new List <int>() { 12 /*monthly*/, 26 /*biweekly*/, 52 /*weekly*/ }; expectedPaycheckCounts.ForEach(expectedPaycheckCount => { var employee = new Employee(1, "Alan", "Smith"); var salary = new Salary() { PerPeriod = 1000, Interval = (PayInterval)expectedPaycheckCount }; var benefit = new Benefit() { Beneficiary = employee, GrossCost = 1000 }; var benefitPackage = new BenefitPackage(); benefitPackage.Benefits.Add(benefit); var mockSalaryLogic = new Mock <ISalaryLogic>(); mockSalaryLogic.Setup(x => x.GetItem(employee)).Returns(salary); var mockBenefitLogic = new Mock <IBenefitPackageLogic>(); mockBenefitLogic.Setup(x => x.GetItem(employee)).Returns(benefitPackage); var payrollLogic = new PayrollLogic(mockSalaryLogic.Object, mockBenefitLogic.Object); Payroll payroll = payrollLogic.Calculate(employee); Assert.AreEqual(expectedPaycheckCount, payroll.PaySchedule.Count); }); }
public void SalaryShouldMatchPayScheduleSummation() { var employee = new Employee(1, "Alan", "Smith"); var salary = new Salary() { PerPeriod = 1000, Interval = PayInterval.Weekly }; var benefit = new Benefit() { Beneficiary = employee, GrossCost = 1000 }; var benefitPackage = new BenefitPackage(); benefitPackage.Benefits.Add(benefit); var mockSalaryLogic = new Mock <ISalaryLogic>(); mockSalaryLogic.Setup(x => x.GetItem(employee)).Returns(salary); var mockBenefitLogic = new Mock <IBenefitPackageLogic>(); mockBenefitLogic.Setup(x => x.GetItem(employee)).Returns(benefitPackage); var payrollLogic = new PayrollLogic(mockSalaryLogic.Object, mockBenefitLogic.Object); Payroll payroll = payrollLogic.Calculate(employee); Assert.AreEqual(payroll.Salary.Yearly, payroll.PaySchedule.Sum(x => x.GrossPay)); Assert.AreEqual(payroll.NetYearlySalary, payroll.PaySchedule.Sum(x => x.NetPay)); }
private static IEnumerable <PayPeriod> BreakoutPaySchedule(Salary salary, BenefitPackage benefitPackage) { int payPeriodsPerYear = (int)salary.Interval; decimal typicalDeductions = (benefitPackage.NetCost / payPeriodsPerYear).TruncateToTwoDecimals(); var periods = Enumerable.Range(1, payPeriodsPerYear - 1) .Select(index => new PayPeriod() { Period = index, GrossPay = salary.PerPeriod, Deductions = typicalDeductions, }).ToList(); var lastPeriod = new PayPeriod { Period = payPeriodsPerYear, GrossPay = salary.Yearly - periods.Sum(x => x.GrossPay), Deductions = benefitPackage.NetCost - periods.Sum(x => x.Deductions) }; periods.Add(lastPeriod); return(periods); }
public Employee( string name, int age, int id, float pay, string ssn) { EmpBenefits = new BenefitPackage(); EmpName = name; EmpAge = age; EmpID = id; CurPay = pay; EmpSSN = ssn; }
public BenefitPackage GetItem(Employee employee) { if (employee == null) { throw new ArgumentNullException(nameof(employee)); } var benefitPackage = new BenefitPackage(); var employeeBenefit = this._benefitLogic.GetItem(employee); benefitPackage.Benefits.Add(employeeBenefit); benefitPackage.Benefits.AddRange(this.GetDependentBenefits(employee)); return(benefitPackage); }