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); }
/// <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 MonthlyEmployeeFactoryShouldCreateHourlySalaryEmployeeDTO() { // arrange var employee = new Employee(); var factory = new MonthlyEmployeeFactory(employee); // act var dto = factory.GetEmployeeDto(); //assert Assert.IsInstanceOfType(dto, typeof(MonthlySalaryEmployeeDTO)); }
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); }