Exemple #1
0
        /// <summary>
        /// Here we use the factory method pattern to calculate the employee's AnnualSalary
        /// </summary>
        /// <param name="employee">Employee</param>
        private static void ProcessEmployee(Employee employee)
        {
            IEmployeeFactory employeeFactory = null;
            var salary = 0m;

            switch (employee.ContractTypeName)
            {
            case "HourlySalaryEmployee":
                employeeFactory = new HourlyEmployeeFactory();
                salary          = employee.HourlySalary;
                break;

            case "MonthlySalaryEmployee":
                employeeFactory = new MonthlyEmployeeFactory();
                salary          = employee.MonthlySalary;
                break;

            default:
                break;
            }
            if (employeeFactory != null)
            {
                employee.AnnualSalary = employeeFactory.GetEmployee().CalculateAnnualSalary(salary);
            }
        }
        public void HourlyEmployeeFactory_Create_CreatesEmployee()
        {
            // arrange
            var basicEmployee = new BasicEmployee
            {
                Id               = 100,
                Name             = "Employee X",
                ContractTypeName = "HourlySalaryEmployee",
                RoleId           = 300,
                RoleName         = "Role Name",
                RoleDescription  = "Role Description",
                HourlySalary     = 150,
                MonthlySalary    = 200
            };
            var expectedSalary = basicEmployee.HourlySalary * 120 * 12;
            var factory        = new HourlyEmployeeFactory();

            // act
            var hourlyEmployee = factory.Create(basicEmployee);

            // assert
            Assert.IsNotNull(hourlyEmployee);
            Assert.IsInstanceOfType(hourlyEmployee, typeof(HourlyEmployee));
            Assert.AreEqual(basicEmployee.Id, hourlyEmployee.Id);
            Assert.AreEqual(basicEmployee.RoleId, hourlyEmployee.Role.Id);
            Assert.AreEqual(expectedSalary, hourlyEmployee.AnnualSalary);
        }
Exemple #3
0
        public void HourlyEmployeeFactoryShouldCreateHourlySalaryEmployeeDTO()
        {
            var employee = new Employee();
            // arrange
            var factory = new HourlyEmployeeFactory(employee);
            // act
            var dto = factory.GetEmployeeDto();

            //assert
            Assert.IsInstanceOfType(dto, typeof(HourlySalaryEmployeeDTO));
        }
Exemple #4
0
        public void HourlyEmployeeRateShouldBeOk()
        {
            //arrange
            var employee = new Employee();

            employee.HourlySalary     = 10;
            employee.ContractTypeName = "HourlySalaryEmployee";

            //act
            var factory = new HourlyEmployeeFactory(employee);
            var dto     = factory.GetEmployeeDto();

            //assert
            Assert.AreEqual(dto.AnnualRate, 120 * employee.HourlySalary * 12);
        }