Beispiel #1
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #7
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);
        }
Beispiel #8
0
        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());
        }
Beispiel #9
0
        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);
        }
Beispiel #11
0
        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);
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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);
        }
Beispiel #14
0
 public EmployeeController()
 {
     serviceObject = new EmployeeRepositoryService();
 }