public void EditEmployee(Employee editEmployee)
 {
     var employee = _context.Employees.SingleOrDefault(x => x.EmployeeId == editEmployee.EmployeeId);
     if (employee == null) return;
     employee.Name = editEmployee.Name;
     employee.PayRate = editEmployee.PayRate;
 }
        public decimal CalculateDeduction(Employee employee)
        {
            if (employee.Name.ToUpper().StartsWith("A"))
            {
                return ((decimal)(1000.00/26) - ((decimal)(1000.00/26) * (decimal).1));
            }

            return (decimal) (1000.00/26);
        }
        public void CostCalculation_DiscountAppliedLowerCase()
        {
            //Arrange
            var noDiscountEmployee = new Employee
            {
                Name = "avenged sevenfold",
                PayRate = 2000
            };

            //Act
            _employeeRepo.AddEmployee(noDiscountEmployee);
            var employee = _context.Employees.Local[0];

            //Assert
            Assert.That(employee.CostOfBenefits, Is.EqualTo(employeeDiscountCost));
        }
        public void CostCalculation_DiscountNotApplied()
        {
            //Arrange
            var noDiscountEmployee = new Employee
            {
                Name = "Macgruber",
                PayRate = 2000
            };

            //Act
            _employeeRepo.AddEmployee(noDiscountEmployee);
            var employee = _context.Employees.Local[0];

            //Assert
            Assert.That(employee.CostOfBenefits, Is.EqualTo(employeeNoDiscountCost));
        }
        public void AddEmployee_NoNameShouldFail()
        {
            //Arrange
            var invalidEmployee = new Employee
            {
                Name = InvalidEmployeeName,
                PayRate = ValidEmployeePayRate
            };

            //Act
            _employeeRepo.AddEmployee(invalidEmployee);

            //Assert
            Assert.That(() => _employeeRepo.SaveAll(), Throws.Exception);

        }
        public void AddEmployee_ShouldAddEmployeeToContext()
        {
            //Arrange
            var validEmployee = new Employee
            {
                Name = ValidEmployeeName,
                PayRate = ValidEmployeePayRate
            };

            //Act
            _employeeRepo.AddEmployee(validEmployee);
            var validatedEmployee = _context.Employees.Local[0];

            //Assert
            Assert.That(validEmployee, Is.EqualTo(validatedEmployee));

        }
        public void AddEmployee_ShouldAddEmployeeToContextWithDependent()
        {
            var validEmployee = new Employee
            {
                Dependents = new[]
                {
                    new Dependent
                    {
                        Name = ValidDependentName
                    }
                },
                Name = ValidEmployeeName,
                PayRate = ValidEmployeePayRate
            };

            _employeeRepo.AddEmployee(validEmployee);
            var validatedEmployee = _context.Employees.Local[0];

            Assert.That(validEmployee, Is.EqualTo(validatedEmployee));
        }
 public void AddEmployee(Employee newEmployee)
 {
     _context.Employees.Add(newEmployee);
 }
 public decimal CalculateCostOfBenefits(Employee employee)
 {
     return employee.PayRate - CalculateDeduction(employee); 
 }
        public void AddEmployee_ShouldAddMultipleEmployeesToContext()
        {
            var validEmployee = new Employee
            {
                Name = ValidEmployeeName,
                PayRate = ValidEmployeePayRate
            };
            var validEmployee2 = new Employee
            {
                Name = "Dio",
                PayRate = ValidEmployeePayRate
            };
            var validEmployee3 = new Employee
            {
                Name = "Jack Black",
                PayRate = ValidEmployeePayRate
            };

            //Act
            _employeeRepo.AddEmployee(validEmployee);
            _employeeRepo.AddEmployee(validEmployee2);
            _employeeRepo.AddEmployee(validEmployee3);
            var validatedEmployee = _context.Employees.Local[0];
            var validatedEmployee2 = _context.Employees.Local[1];
            var validatedEmployee3 = _context.Employees.Local[2];

            //Assert
            Assert.That(validEmployee, Is.EqualTo(validatedEmployee));
            Assert.That(validEmployee2, Is.EqualTo(validatedEmployee2));
            Assert.That(validEmployee3, Is.EqualTo(validatedEmployee3));
        }
        public void AddEmployee_NoNameEmployeeNoNameDependentShouldFail()
        {
            //Arrange
            var invalidEmployeeInvalidDependent = new Employee
            {
                Dependents = new[]
                {
                    new Dependent
                    {
                        Name = InvalidDependentName
                    }
                },
                Name = InvalidEmployeeName,
                PayRate = ValidEmployeePayRate
            };

            //Act
            _employeeRepo.AddEmployee(invalidEmployeeInvalidDependent);

            //Assert
            Assert.That(() => _employeeRepo.SaveAll(), Throws.Exception);
        }
        public void AddEmployee_ShouldAddMultipleEmployeesWithMultipleDependentsToContext()
        {
            var validEmployee = new Employee
            {
                Dependents = new []
                {
                    new Dependent
                    {
                        Name = ValidDependentName
                    }
                },
                Name = ValidEmployeeName,
                PayRate = ValidEmployeePayRate
            };
            var validEmployee2 = new Employee
            {
                Dependents = new []
                {
                    new Dependent
                    {
                        Name = "Lzzy Hale"
                    },
                    new Dependent
                    {
                        Name = "Tarja Turunen"
                    }
                },
                Name = "Dio",
                PayRate = ValidEmployeePayRate
            };
            var validEmployee3 = new Employee
            {
                Dependents = new []
                {
                    new Dependent
                    {
                        Name = "Wayne Static"
                    },
                    new Dependent
                    {
                        Name = "Freddie Mercury"
                    },
                    new Dependent
                    {
                        Name = "Jon BonJovi"
                    }
                },
                Name = "Jack Black",
                PayRate = ValidEmployeePayRate
            };

            //Act
            _employeeRepo.AddEmployee(validEmployee);
            _employeeRepo.AddEmployee(validEmployee2);
            _employeeRepo.AddEmployee(validEmployee3);
            var validatedEmployee = _context.Employees.Local[0];
            var validatedEmployee2 = _context.Employees.Local[1];
            var validatedEmployee3 = _context.Employees.Local[2];

            //Assert
            Assert.That(validEmployee, Is.EqualTo(validatedEmployee));
            Assert.That(validEmployee2, Is.EqualTo(validatedEmployee2));
            Assert.That(validEmployee3, Is.EqualTo(validatedEmployee3));
        }
        public void AddEmployee_ShouldAddEmployeeWithMultipleDependentsToContext()
        {
            var validEmployee = new Employee
            {
                Dependents = new[]
                 {
                    new Dependent
                    {
                        Name = ValidDependentName
                    },

                    new Dependent
                    {
                        Name = "Howard Jones"
                    },

                    new Dependent
                    {
                        Name = "Lzzy Hale"
                    }
                },
                Name = ValidEmployeeName,
                PayRate = ValidEmployeePayRate
            };

            _employeeRepo.AddEmployee(validEmployee);
            var validatedEmployee = _context.Employees.Local[0];

            Assert.That(validEmployee, Is.EqualTo(validatedEmployee));
        }