public void On_LoadTransactions_Single_Employee_Should_Have_Transactions() { var id1 = 1; var employee1 = new Employee { ID = id1 }; var employees = new List <Employee> { employee1 }; IEmployeeRepositoryService subject = new EmployeeRepositoryService(logger); subject.LoadEmployees(employees); var transaction = new Transaction { EmpId = id1, SSN = "" }; var transactions = new List <Transaction> { transaction }; var transactionsBeforeAction = subject.Employees[id1].Transactions.Count; subject.LoadTransactions(transactions); var transactionsAfterAction = subject.Employees[id1].Transactions.Count; transactionsBeforeAction.Should().Be(transactionsAfterAction - 1); subject.Employees[id1].Transactions[0].Should().Be(transaction); }
public void On_Convert_Payroll_MultipleShift_FixesTips() { IPayrollConverterUtils payrollConverterUtils = new PayrollConverterUtils(logger); var employeeRepository = new EmployeeRepositoryService(logger); IPayrollConverter subject = new PayrollConverter(logger, payrollConverterUtils, employeeRepository); var data = new AlohaDataset(); var empRow = AlohaDataUtils.CreateEmpRow(data, 1, "123456789", "Test", "Employee", 123456789); var adjtimeRow = AlohaDataUtils.CreateAdjTimeRow(data, 1, "", DateTime.Today, DateTime.Today, DateTime.Today, 1, 12, 0, 14, 30, 0.5m, 10m, 10m); var adjtimeRow2 = AlohaDataUtils.CreateAdjTimeRow(data, 1, "", DateTime.Today, DateTime.Today, DateTime.Today, 1, 15, 0, 16, 30, 0.5m, 10m, 10m); var gndbroeakRow = AlohaDataUtils.CreateBreakRow(data, 1, "", DateTime.Today, DateTime.Today, DateTime.Today, 1, 12, 30, 13, 00, 0.5m); data.emp.AddempRow(empRow); data.adjtime.AddadjtimeRow(adjtimeRow); data.adjtime.AddadjtimeRow(adjtimeRow2); data.gndbreak.AddgndbreakRow(gndbroeakRow); var tipStrategy = TipCalculation.Auto; var result = subject.ConvertPayroll(data, tipStrategy); var resultTips = result[0].Transactions.Where(t => t.Type == TransactionType.PayCode).ToList(); resultTips.Count.Should().Be(2); resultTips[0].ClockIn.Hour.Should().Be(12); resultTips[0].ClockIn.Minute.Should().Be(0); resultTips[1].ClockIn.Hour.Should().Be(12); resultTips[1].ClockIn.Minute.Should().Be(5); }
public void On_LoadTransactions_Employee_NotFound_Should_Warn() { var logger = new Mock <ILogger>(); var id1 = 1; var ssn1 = "1"; var employee1 = new Employee { ID = id1, SocialSecurity = ssn1 }; var employees = new List <Employee> { employee1 }; IEmployeeRepositoryService subject = new EmployeeRepositoryService(logger.Object); subject.LoadEmployees(employees); var transaction = new Transaction { EmpId = 2, SSN = "" }; var transactions = new List <Transaction> { transaction }; subject.LoadTransactions(transactions); logger.Verify(c => c.Warn(It.IsAny <string>()), Times.Once); }
public void Can_Create_Employee_Repository_Service() { var subject = new EmployeeRepositoryService(logger); subject.Should().NotBeNull(); subject.Should().BeAssignableTo <IEmployeeRepositoryService>(); subject.Employees.Should().NotBeNull(); subject.Employees.Count.Should().Be(0); }
public void On_Convert_Payroll_EmptyData_Returns_EmptyList() { IPayrollConverterUtils payrollConverterUtils = new PayrollConverterUtils(logger); var employeeRepository = new EmployeeRepositoryService(logger); IPayrollConverter subject = new PayrollConverter(logger, payrollConverterUtils, employeeRepository); var data = new AlohaDataset(); var tipStrategy = TipCalculation.Auto; var result = subject.ConvertPayroll(data, tipStrategy); result.Should().NotBeNull(); result.Should().BeEmpty(); }
public void On_Convert_Payroll_OnlyEmployees_ReturnsListWith_EmptyTransactions() { IPayrollConverterUtils payrollConverterUtils = new PayrollConverterUtils(logger); var employeeRepository = new EmployeeRepositoryService(logger); IPayrollConverter subject = new PayrollConverter(logger, payrollConverterUtils, employeeRepository); var data = new AlohaDataset(); var empRow = AlohaDataUtils.CreateEmpRow(data, 1, "123456789", "Test", "Employee", 123456789); data.emp.AddempRow(empRow); var tipStrategy = TipCalculation.Auto; var result = subject.ConvertPayroll(data, tipStrategy); result.Should().NotBeNull(); result.Count.Should().Be(1); result[0].Transactions.Count.Should().Be(0); }
public void On_LoadEmployees_Adding_Duplicates_Should_Add_First() { var id1 = 1; var employee1 = new Employee { ID = id1, SocialSecurity = "1" }; var employee2 = new Employee { ID = id1, SocialSecurity = "2" }; var employees = new List <Employee> { employee1, employee2 }; IEmployeeRepositoryService subject = new EmployeeRepositoryService(logger); subject.LoadEmployees(employees); subject.Employees.Count.Should().Be(1); subject.Employees[id1].Should().Be(employee1); }
public void On_LoadEmployees_Adding_Suplicates_Should_LogWarning() { var logger = new Mock <ILogger>(); var id1 = 1; var employee1 = new Employee { ID = id1 }; var employee2 = new Employee { ID = id1 }; var employees = new List <Employee> { employee1, employee2 }; IEmployeeRepositoryService subject = new EmployeeRepositoryService(logger.Object); subject.LoadEmployees(employees); logger.Verify(c => c.Warn(It.IsAny <string>()), Times.Once()); }
public void On_LoadTransactions_Mult_Employee_Transaction_Should_Have_SSN() { int id1 = 1, id2 = 2; string ssn1 = "1", ssn2 = "2"; var employee1 = new Employee { ID = id1, SocialSecurity = ssn1 }; var employee2 = new Employee { ID = id2, SocialSecurity = ssn2 }; var employees = new List <Employee> { employee1, employee2 }; IEmployeeRepositoryService subject = new EmployeeRepositoryService(logger); subject.LoadEmployees(employees); var transaction1_e1 = new Transaction { EmpId = id1, SSN = "" }; var transaction2_e1 = new Transaction { EmpId = id1, SSN = "" }; var transaction3_e2 = new Transaction { EmpId = id2, SSN = "" }; var transaction4_e2 = new Transaction { EmpId = id2, SSN = "" }; var transactions = new List <Transaction> { transaction1_e1, transaction2_e1, transaction3_e2, transaction4_e2 }; subject.LoadTransactions(transactions); subject.Employees[id1].Transactions[0].SSN.Should().Be(ssn1); subject.Employees[id1].Transactions[1].SSN.Should().Be(ssn1); subject.Employees[id2].Transactions[0].SSN.Should().Be(ssn2); subject.Employees[id2].Transactions[1].SSN.Should().Be(ssn2); }
public void On_Convert_Payroll_EmpFullData_ReturnsListWith_Transactions() { IPayrollConverterUtils payrollConverterUtils = new PayrollConverterUtils(logger); var employeeRepository = new EmployeeRepositoryService(logger); IPayrollConverter subject = new PayrollConverter(logger, payrollConverterUtils, employeeRepository); var data = new AlohaDataset(); var empRow = AlohaDataUtils.CreateEmpRow(data, 1, "123456789", "Test", "Employee", 123456789); var adjtimeRow = AlohaDataUtils.CreateAdjTimeRow(data, 1, "", DateTime.Today, DateTime.Today, DateTime.Today, 1, 12, 0, 14, 30, 0.5m, 10m, 10m); var gndbroeakRow = AlohaDataUtils.CreateBreakRow(data, 1, "", DateTime.Today, DateTime.Today, DateTime.Today, 1, 12, 30, 13, 00, 0.5m); data.emp.AddempRow(empRow); data.adjtime.AddadjtimeRow(adjtimeRow); data.gndbreak.AddgndbreakRow(gndbroeakRow); var tipStrategy = TipCalculation.Auto; var result = subject.ConvertPayroll(data, tipStrategy); result[0].Transactions.Count.Should().Be(3); result[0].Transactions.Should().Contain(t => t.Type == TransactionType.ClockInOut && t.PeriodType == PeriodType.Shift); result[0].Transactions.Should().Contain(t => t.Type == TransactionType.ClockInOut && t.PeriodType == PeriodType.Break); result[0].Transactions.Should().ContainSingle(t => t.Type == TransactionType.PayCode); }
public void On_LoadEmployees_Employee_Are_Same() { var id1 = 1; var id2 = 2; var employee1 = new Employee { ID = id1 }; var employee2 = new Employee { ID = id2 }; var employees = new List <Employee> { employee1, employee2 }; IEmployeeRepositoryService subject = new EmployeeRepositoryService(logger); subject.LoadEmployees(employees); subject.Employees.Count.Should().Be(employees.Count); subject.Employees.Keys.Should().Contain(id1); subject.Employees.Keys.Should().Contain(id2); subject.Employees[id1].Should().Be(employee1); subject.Employees[id2].Should().Be(employee2); }
public void On_AdjustPaycodesForMultipleShifts_PayCodeTransactionsAreFixed() { int id1 = 1; string ssn1 = "1"; var employee1 = new Employee { ID = id1, SocialSecurity = ssn1 }; var employees = new List <Employee> { employee1 }; IEmployeeRepositoryService subject = new EmployeeRepositoryService(logger); subject.LoadEmployees(employees); var transaction1 = new Transaction { EmpId = id1, Type = TransactionType.ClockInOut, ClockIn = DateTime.Today.AddHours(12) }; var transaction2 = new Transaction { EmpId = id1, Type = TransactionType.PayCode, ClockIn = DateTime.Today.AddHours(12) }; var transaction3 = new Transaction { EmpId = id1, Type = TransactionType.PayCode, ClockIn = DateTime.Today.AddHours(12) }; var transactions = new List <Transaction> { transaction1, transaction2, transaction3 }; subject.LoadTransactions(transactions); subject.AdjustPaycodesForMultipleShifts(); transaction1.ClockIn.Hour.Should().Be(12); transaction1.ClockIn.Minute.Should().Be(0); transaction2.ClockIn.Hour.Should().Be(12); transaction2.ClockIn.Minute.Should().Be(0); transaction3.ClockIn.Hour.Should().Be(12); transaction3.ClockIn.Minute.Should().Be(5); }
public void On_LoadTransactions_Single_Employee_Transaction_Should_Have_SSN() { var id1 = 1; var ssn1 = "1"; var employee1 = new Employee { ID = id1, SocialSecurity = ssn1 }; var employees = new List <Employee> { employee1 }; IEmployeeRepositoryService subject = new EmployeeRepositoryService(logger); subject.LoadEmployees(employees); var transaction = new Transaction { EmpId = id1, SSN = "" }; var transactions = new List <Transaction> { transaction }; subject.LoadTransactions(transactions); subject.Employees[id1].Transactions[0].SSN.Should().Be(ssn1); }
public EmployeeController() { serviceObject = new EmployeeRepositoryService(); }