Пример #1
0
        public void MonthlyEmployeeFactory_Create_CreatesEmployee()
        {
            // arrange
            var basicEmployee = new BasicEmployee
            {
                Id               = 50,
                Name             = "Employee 2",
                ContractTypeName = "MonthlySalaryEmployee",
                RoleId           = 200,
                RoleName         = "Role Name",
                RoleDescription  = "Role Description",
                HourlySalary     = 160,
                MonthlySalary    = 220
            };
            var expectedSalary = basicEmployee.MonthlySalary * 12;
            var factory        = new MonthlyEmployeeFactory();

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

            // assert
            Assert.IsNotNull(hourlyEmployee);
            Assert.IsInstanceOfType(hourlyEmployee, typeof(MonthlyEmployee));
            Assert.AreEqual(basicEmployee.Id, hourlyEmployee.Id);
            Assert.AreEqual(basicEmployee.RoleId, hourlyEmployee.Role.Id);
            Assert.AreEqual(expectedSalary, hourlyEmployee.AnnualSalary);
        }
Пример #2
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);
            }
        }
Пример #3
0
        public void MonthlyEmployeeFactoryShouldCreateHourlySalaryEmployeeDTO()
        {
            // arrange
            var employee = new Employee();
            var factory  = new MonthlyEmployeeFactory(employee);
            // act
            var dto = factory.GetEmployeeDto();

            //assert
            Assert.IsInstanceOfType(dto, typeof(MonthlySalaryEmployeeDTO));
        }
Пример #4
0
        public void MonthlyEmployeeRateShouldBeOk()
        {
            //arrange
            var employee = new Employee();

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

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

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