public void TestThatWtkfProfileWillBeMappedToExceptionRulePerPayRuleIfExceptionRuleDoesntExist() { var wsaExceptionRuleCount = 3; var wtkProfiles = new List <WtkProfile>(); var wtkProfile = new WtkProfile { PayRule = new PayRule { FullName = "FullName", PayRuleName = "PayRuleName", PersonNumber = "PersonNumber" }, ExceptionRuleName = "ExceptionRuleNameNotExist" }; wtkProfiles.Add(wtkProfile); var wsaExceptionRules = new List <WsaExceptionRule>(); for (int i = 1; i <= wsaExceptionRuleCount; i++) { var exceptionRule = new WsaExceptionRule { Name = "ExceptionRuleName" + i, InEarly = new TimeSpan(0, 17 + i, 0), OutEarly = new TimeSpan(8, 10 + i, 0), InVeryEarly = "InVeryEarly" + i, OutVeryLate = "OutVeryLate" + i, InLate = new TimeSpan(0, 15 + i, 0), OutLate = new TimeSpan(4, 10 + i, 0), EarlyOutNdPayCodeName = "EarlyOutNdPayCodeName" + i, Unscheduled = i % 2 == 0, Breaks = new List <string> { "Break" + i + 1, "Break" + i + 2, "Break" + i + 3 } }; wsaExceptionRules.Add(exceptionRule); } var mapper = new ExceptionRuleMapper(); var results = mapper.Map(wtkProfiles, wsaExceptionRules); Assert.NotNull(results); Assert.AreEqual(1, results.Count); Assert.AreEqual("FullName", results[0].PayRule.FullName); Assert.AreEqual("PersonNumber", results[0].PayRule.PersonNumber); Assert.AreEqual("PayRuleName", results[0].PayRule.PayRuleName); Assert.AreEqual(null, results[0].ExceptionRule.Name); }
public void TestThatDataMapCorrectly() { var payRuleCount = 3; var wtkProfiles = new List <WtkProfile>(); for (int i = 1; i <= payRuleCount; i++) { var wtkProfile = new WtkProfile { PayRule = new PayRule { FullName = "FullName" + i, PayRuleName = "PayRuleName" + i, PersonNumber = "PersonNumber" + i }, ExceptionRuleName = "ExceptionRuleName" + i }; wtkProfiles.Add(wtkProfile); } var timesheets = TimesheetStub.GetData(); var mapper = new DailyTimecardMapper(); var result = mapper.Map(wtkProfiles, timesheets); Assert.AreEqual(payRuleCount, result.Count); for (int i = 0; i < payRuleCount; i++) { Assert.AreEqual(wtkProfiles[i], result[i].Profile); if (i < payRuleCount - 1) { Assert.True(result[i].TotalsUpToDateFlag); } else { Assert.False(result[i].TotalsUpToDateFlag); } } Assert.AreEqual(1, result[0].PunchDateTotals.Count); Assert.AreEqual(new TimeSpan(12, 31, 0), result[0].PunchDateTotals[0].PunchIn.Time); Assert.AreEqual(new TimeSpan(13, 31, 0), result[0].PunchDateTotals[0].PunchOut.Time); Assert.AreEqual(new DateTime(2017, 1, 1), result[0].PunchDateTotals[0].Date); Assert.AreEqual(1, result[0].PunchDateTotals[0].Totals.Count); Assert.AreEqual(new TimeSpan(9, 0, 0), result[0].PunchDateTotals[0].Totals[0].AmountInTime); Assert.AreEqual("LaborAccountDescription", result[0].PunchDateTotals[0].Totals[0].LaborAccountDescription); Assert.AreEqual("PayCodeName", result[0].PunchDateTotals[0].Totals[0].PayCodeName); Assert.AreEqual(0, result[2].PunchDateTotals.Count); }
public void TestThatWtkfProfileAndOvertimeRuleAndBonusRuleModelsMapToOvertimeRulePerPayRuleCorrectly() { var payRuleCount = 2; var overtimeRulesCount = 3; var bonusDeductRulesCount = 1; var wtkProfiles = new List <WtkProfile>(); for (int i = 1; i <= payRuleCount; i++) { var wtkProfile = new WtkProfile { PayRule = new PayRule { FullName = "FullName" + i, PayRuleName = "PayRuleName" + i, PersonNumber = "PersonNumber" + i }, OvertimeRuleName = "OvertimeRuleName" + i, BonusDeductRuleName = "BonusDeductRule" + i }; wtkProfiles.Add(wtkProfile); var wtkProfile2 = new WtkProfile { PayRule = new PayRule { FullName = "FullName2" + i, PayRuleName = "PayRuleName" + i, PersonNumber = "PersonNumber2" + i }, OvertimeRuleName = "OvertimeRuleName" + i, BonusDeductRuleName = "BonusDeductRule" + i }; wtkProfiles.Add(wtkProfile2); } var overtimeRules = new List <OvertimeRule>(); for (int i = 1; i <= overtimeRulesCount; i++) { var overtimeRule = new OvertimeRule { Name = "OvertimeRuleName" + i, Amount = new TimeSpan(0, 17 + i, 0), ResetAtTime = new TimeSpan(8, 10 + i, 0), RequiresApproval = true, ResetDay = i, UseRoundedTime = true }; overtimeRules.Add(overtimeRule); } var bonusDeductRules = new List <BonusDeductRule>(); for (int i = 1; i <= bonusDeductRulesCount; i++) { var bonusDeductRule = new BonusDeductRule { Name = "BonusDeductRule" + i, Amount = "Amount" + i, PayCode = "PayCode" + i, ShiftMinimumHours = new TimeSpan(8, 10 + i, 0), Type = "Type" + i }; bonusDeductRules.Add(bonusDeductRule); } var mapper = new OvertimeRuleMapper(); var results = mapper.Map(wtkProfiles, overtimeRules, bonusDeductRules); Assert.NotNull(results); Assert.AreEqual(payRuleCount, results.Count); for (int i = 1; i <= payRuleCount; i++) { Assert.AreEqual("FullName" + i, results[i - 1].PayRule.FullName); Assert.AreEqual("PersonNumber" + i, results[i - 1].PayRule.PersonNumber); Assert.AreEqual("PayRuleName" + i, results[i - 1].PayRule.PayRuleName); if (overtimeRules.Any(s => s.Name.Equals("OvertimeRuleName" + i, StringComparison.OrdinalIgnoreCase))) { Assert.AreEqual("OvertimeRuleName" + i, results[i - 1].OvertimeRule.Name); Assert.AreEqual(new TimeSpan(0, 17 + i, 0), results[i - 1].OvertimeRule.Amount); Assert.AreEqual(new TimeSpan(8, 10 + i, 0), results[i - 1].OvertimeRule.ResetAtTime); Assert.AreEqual(true, results[i - 1].OvertimeRule.RequiresApproval); Assert.AreEqual(true, results[i - 1].OvertimeRule.UseRoundedTime); Assert.AreEqual(i, results[i - 1].OvertimeRule.ResetDay); } else { Assert.Null(results[i - 1].OvertimeRule); } if (bonusDeductRules.Any(s => s.Name.Equals("BonusDeductRule" + i, StringComparison.OrdinalIgnoreCase))) { Assert.AreEqual("BonusDeductRule" + i, results[i - 1].BonusDeductRule.Name); Assert.AreEqual("Amount" + i, results[i - 1].BonusDeductRule.Amount); Assert.AreEqual("PayCode" + i, results[i - 1].BonusDeductRule.PayCode); Assert.AreEqual("Type" + i, results[i - 1].BonusDeductRule.Type); Assert.AreEqual(new TimeSpan(8, 10 + i, 0), results[i - 1].BonusDeductRule.ShiftMinimumHours); } else { Assert.Null(results[i - 1].BonusDeductRule); } } }
public void TestThatWtkfProfileAndPunchRoundRuleAndBreakRuleModelsMapToPunchRoundRulePerPayRuleCorrectly() { var payRuleCount = 2; var punchRoundRulesCount = 3; var breakRulesCount = 1; var wtkProfiles = new List <WtkProfile>(); for (int i = 1; i <= payRuleCount; i++) { var wtkProfile = new WtkProfile { PayRule = new PayRule { FullName = "FullName" + i, PayRuleName = "PayRuleName" + i, PersonNumber = "PersonNumber" + i }, BreakRuleNames = "BreakRuleNames" + i, RoundRuleName = "RoundRuleName" + i }; wtkProfiles.Add(wtkProfile); var wtkProfile2 = new WtkProfile { PayRule = new PayRule { FullName = "FullName2" + i, PayRuleName = "PayRuleName" + i, PersonNumber = "PersonNumber2" + i }, BreakRuleNames = "BreakRuleNames" + i, RoundRuleName = "RoundRuleName" + i }; wtkProfiles.Add(wtkProfile2); } var punchRoundRules = new List <PunchRoundRule>(); for (int i = 1; i <= punchRoundRulesCount; i++) { var punchRoundRule = new PunchRoundRule { Name = "RoundRuleName" + i, InPunchEarlyChangePoint = new TimeSpan(0, 10 + i, 0), InPunchEarlyInsideRound = new TimeSpan(0, 11 + i, 0), InPunchEarlyInsideGrace = new TimeSpan(0, 12 + i, 0), OutPunchEarlyChangePoint = new TimeSpan(0, 10 + i, 0), OutPunchEarlyInsideRound = new TimeSpan(0, 11 + i, 0), OutPunchEarlyInsideGrace = new TimeSpan(0, 12 + i, 0) }; punchRoundRules.Add(punchRoundRule); } var breakRules = new List <BreakRule>(); for (int i = 1; i <= breakRulesCount; i++) { var breakRule = new BreakRule { Name = "BreakRuleNames" + i, LongChangePoint = new TimeSpan(0, i, 0), LongGrace = new TimeSpan(0, 1 + i, 0), LongRound = new TimeSpan(0, 2 + i, 0), ShortChangePoint = new TimeSpan(0, i, 0), ShortGrace = new TimeSpan(0, 1 + i, 0), ShortRound = new TimeSpan(0, 2 + i, 0), UseUnscheduledPunchRounding = true }; breakRules.Add(breakRule); } var mapper = new PunchRoundRuleMapper(); var results = mapper.Map(wtkProfiles, punchRoundRules, breakRules); Assert.NotNull(results); Assert.AreEqual(payRuleCount, results.Count); for (int i = 1; i <= payRuleCount; i++) { Assert.AreEqual("FullName" + i, results[i - 1].PayRule.FullName); Assert.AreEqual("PersonNumber" + i, results[i - 1].PayRule.PersonNumber); Assert.AreEqual("PayRuleName" + i, results[i - 1].PayRule.PayRuleName); if (punchRoundRules.Any(s => s.Name.Equals("RoundRuleName" + i, StringComparison.OrdinalIgnoreCase))) { Assert.AreEqual("RoundRuleName" + i, results[i - 1].PunchRoundRule.Name); Assert.AreEqual(new TimeSpan(0, 10 + i, 0), results[i - 1].PunchRoundRule.InPunchEarlyChangePoint); Assert.AreEqual(new TimeSpan(0, 11 + i, 0), results[i - 1].PunchRoundRule.InPunchEarlyInsideRound); Assert.AreEqual(new TimeSpan(0, 12 + i, 0), results[i - 1].PunchRoundRule.InPunchEarlyInsideGrace); Assert.AreEqual(new TimeSpan(0, 10 + i, 0), results[i - 1].PunchRoundRule.OutPunchEarlyChangePoint); Assert.AreEqual(new TimeSpan(0, 11 + i, 0), results[i - 1].PunchRoundRule.OutPunchEarlyInsideRound); Assert.AreEqual(new TimeSpan(0, 12 + i, 0), results[i - 1].PunchRoundRule.OutPunchEarlyInsideGrace); } else { Assert.Null(results[i - 1].PunchRoundRule); } if (breakRules.Any(s => s.Name.Equals("BreakRuleNames" + i, StringComparison.OrdinalIgnoreCase))) { Assert.AreEqual("BreakRuleNames" + i, results[i - 1].BreakRule.Name); Assert.AreEqual(new TimeSpan(0, i, 0), results[i - 1].BreakRule.LongChangePoint); Assert.AreEqual(new TimeSpan(0, 1 + i, 0), results[i - 1].BreakRule.LongGrace); Assert.AreEqual(new TimeSpan(0, 2 + i, 0), results[i - 1].BreakRule.LongRound); Assert.AreEqual(new TimeSpan(0, i, 0), results[i - 1].BreakRule.ShortChangePoint); Assert.AreEqual(new TimeSpan(0, 1 + i, 0), results[i - 1].BreakRule.ShortGrace); Assert.AreEqual(new TimeSpan(0, 2 + i, 0), results[i - 1].BreakRule.ShortRound); Assert.AreEqual(true, results[i - 1].BreakRule.UseUnscheduledPunchRounding); } else { Assert.Null(results[i - 1].BreakRule); } } }
public void TestThatWtkfProfileAndShiftGuaranteeMapToShiftGuaranteePerPayRuleCorrectly() { var payRuleCount = 2; var wtkProfiles = new List <WtkProfile>(); for (int i = 1; i <= payRuleCount; i++) { var wtkProfile = new WtkProfile { PayRule = new PayRule { FullName = "FullName" + i, PayRuleName = "PayRuleName" + i, PersonNumber = "PersonNumber" + i }, WorkruleName = "WorkruleName" + i, BreakRuleNames = "BreakRuleNames" + i, BonusDeductRuleName = "BonusDeductRuleName" + i, ShiftGuaranteeName = "ShiftGuarantee" + i }; wtkProfiles.Add(wtkProfile); var wtkProfile2 = new WtkProfile { PayRule = new PayRule { FullName = "FullName2" + i, PayRuleName = "PayRuleName" + i, PersonNumber = "PersonNumber2" + i }, WorkruleName = "WorkruleName" + i, BreakRuleNames = "BreakRuleNames" + i, BonusDeductRuleName = "BonusDeductRuleName" + i, ShiftGuaranteeName = "ShiftGuarantee" + i }; wtkProfiles.Add(wtkProfile2); } var data = new List <ShiftGuarantee> { new ShiftGuarantee { ReductByAmountTardy = true, Sunday = new TimeSpan(13, 10, 0), Monday = new TimeSpan(13, 11, 0), Tuesday = new TimeSpan(13, 12, 0), Wednesday = new TimeSpan(13, 13, 0), Thursday = new TimeSpan(13, 14, 0), Friday = new TimeSpan(13, 15, 0), Saturday = new TimeSpan(13, 16, 0), Name = "ShiftGuarantee1", WorkRule = "WorkRule0" }, new ShiftGuarantee { ReductByAmountTardy = true, Sunday = new TimeSpan(14, 10, 0), Monday = new TimeSpan(14, 11, 0), Tuesday = new TimeSpan(14, 12, 0), Wednesday = new TimeSpan(14, 13, 0), Thursday = new TimeSpan(14, 14, 0), Friday = new TimeSpan(14, 15, 0), Saturday = new TimeSpan(14, 16, 0), Name = "ShiftGuarantee1", WorkRule = "WorkRule1" }, new ShiftGuarantee { ReductByAmountTardy = true, Sunday = new TimeSpan(15, 10, 0), Monday = new TimeSpan(15, 11, 0), Tuesday = new TimeSpan(15, 12, 0), Wednesday = new TimeSpan(15, 13, 0), Thursday = new TimeSpan(15, 14, 0), Friday = new TimeSpan(15, 15, 0), Saturday = new TimeSpan(15, 16, 0), Name = "ShiftGuarantee2", WorkRule = "WorkRule2" } }; var mapper = new ShiftGuaranteeMapper(); var result = mapper.Map(wtkProfiles, data); Assert.NotNull(result); Assert.AreEqual(2, result.Count); var ind = 1; for (int i = 0; i <= 1; i++) { if (i == 1) { ind = 2; } Assert.AreEqual("FullName" + ind, result[i].PayRule.FullName); Assert.AreEqual("PersonNumber" + ind, result[i].PayRule.PersonNumber); Assert.AreEqual("PayRuleName" + ind, result[i].PayRule.PayRuleName); Assert.AreEqual("BonusDeductRuleName" + ind, result[i].BonusDeductRuleName); Assert.AreEqual("BreakRuleNames" + ind, result[i].BreakRuleNames); Assert.AreEqual("WorkruleName" + ind, result[i].WorkruleName); Assert.AreEqual(true, result[i].ShiftGuarantee.ReductByAmountTardy); Assert.AreEqual("ShiftGuarantee" + ind, result[i].ShiftGuarantee.Name); Assert.AreEqual("WorkRule" + ind, result[i].ShiftGuarantee.WorkRule); Assert.AreEqual(new TimeSpan(14 + ind - 1, 10, 0), result[i].ShiftGuarantee.Sunday); Assert.AreEqual(new TimeSpan(14 + ind - 1, 11, 0), result[i].ShiftGuarantee.Monday); Assert.AreEqual(new TimeSpan(14 + ind - 1, 12, 0), result[i].ShiftGuarantee.Tuesday); Assert.AreEqual(new TimeSpan(14 + ind - 1, 13, 0), result[i].ShiftGuarantee.Wednesday); Assert.AreEqual(new TimeSpan(14 + ind - 1, 14, 0), result[i].ShiftGuarantee.Thursday); Assert.AreEqual(new TimeSpan(14 + ind - 1, 15, 0), result[i].ShiftGuarantee.Friday); Assert.AreEqual(new TimeSpan(14 + ind - 1, 16, 0), result[i].ShiftGuarantee.Saturday); } }
public void TestThatWtkfProfileAndWsaExceptionRuleModelsMapToExceptionRulePerPayRuleCorrectly() { var payRuleCount = 2; var wsaExceptionRuleCount = 3; var wtkProfiles = new List <WtkProfile>(); for (int i = 1; i <= payRuleCount; i++) { var wtkProfile = new WtkProfile { PayRule = new PayRule { FullName = "FullName" + i, PayRuleName = "PayRuleName" + i, PersonNumber = "PersonNumber" + i }, ExceptionRuleName = "ExceptionRuleName" + i }; wtkProfiles.Add(wtkProfile); } var wsaExceptionRules = new List <WsaExceptionRule>(); for (int i = 1; i <= wsaExceptionRuleCount; i++) { var exceptionRule = new WsaExceptionRule { Name = "ExceptionRuleName" + i, InEarly = new TimeSpan(0, 17 + i, 0), OutEarly = new TimeSpan(8, 10 + i, 0), InVeryEarly = "InVeryEarly" + i, OutVeryLate = "OutVeryLate" + i, InLate = new TimeSpan(0, 15 + i, 0), OutLate = new TimeSpan(4, 10 + i, 0), EarlyOutNdPayCodeName = "EarlyOutNdPayCodeName" + i, Unscheduled = i % 2 == 0, Breaks = new List <string> { "Break" + i + 1, "Break" + i + 2, "Break" + i + 3 } }; wsaExceptionRules.Add(exceptionRule); } var mapper = new ExceptionRuleMapper(); var results = mapper.Map(wtkProfiles, wsaExceptionRules); Assert.NotNull(results); Assert.AreEqual(payRuleCount, results.Count); for (int i = 1; i <= payRuleCount; i++) { Assert.AreEqual("FullName" + i, results[i - 1].PayRule.FullName); Assert.AreEqual("PersonNumber" + i, results[i - 1].PayRule.PersonNumber); Assert.AreEqual("PayRuleName" + i, results[i - 1].PayRule.PayRuleName); Assert.AreEqual(new TimeSpan(0, 17 + i, 0), results[i - 1].ExceptionRule.InEarly); Assert.AreEqual(new TimeSpan(8, 10 + i, 0), results[i - 1].ExceptionRule.OutEarly); Assert.AreEqual(new TimeSpan(0, 15 + i, 0), results[i - 1].ExceptionRule.InLate); Assert.AreEqual("InVeryEarly" + i, results[i - 1].ExceptionRule.InVeryEarly); Assert.AreEqual("OutVeryLate" + i, results[i - 1].ExceptionRule.OutVeryLate); Assert.AreEqual(new TimeSpan(4, 10 + i, 0), results[i - 1].ExceptionRule.OutLate); Assert.AreEqual("EarlyOutNdPayCodeName" + i, results[i - 1].ExceptionRule.EarlyOutNdPayCodeName); Assert.AreEqual(i % 2 == 0, results[i - 1].ExceptionRule.Unscheduled); Assert.AreEqual("Break" + i + 3, results[i - 1].Break); } }