public void GetEmployees_TestWithValidContractType() { var employeeRepositoryMock = new Mock <IEmployeeRepository>(); var employeeFactory = new EmployeeFactory(); var hourlysalaryCalculatorMock = new Mock <ISalaryCalculator>(); var monthlysalaryCalculatorMock = new Mock <ISalaryCalculator>(); Func <string, ISalaryCalculator> salaryCalculatorFactory = delegate(string name) { if (name == EmployeeTypeContract.Hourly) { return(hourlysalaryCalculatorMock.Object); } else if (name == EmployeeTypeContract.Monthy) { return(monthlysalaryCalculatorMock.Object); } return(null); }; EmployeeManagement employeeManagementTest = new EmployeeManagement(employeeRepositoryMock.Object, employeeFactory, salaryCalculatorFactory, mapper); List <HandsOnTest.DbModels.Employee> dbEmployees = new List <DbModels.Employee>(); dbEmployees.Add(new DbModels.Employee() { Id = 1, Name = "Emp1", ContractTypeName = EmployeeTypeContract.Hourly, HourlySalary = 200.00 }); dbEmployees.Add(new DbModels.Employee() { Id = 2, Name = "Emp2", ContractTypeName = EmployeeTypeContract.Monthy, MonthlySalary = 2000.00 }); employeeRepositoryMock.Setup(t => t.GetAll()).Returns(dbEmployees); hourlysalaryCalculatorMock.Setup(t => t.GetAnnualSalary(It.IsAny <double?>())).Returns(400); monthlysalaryCalculatorMock.Setup(t => t.GetAnnualSalary(It.IsAny <double?>())).Returns(100); var employees = employeeManagementTest.GetEmployees(1); Assert.AreEqual(1, employees.Count); Assert.AreEqual(400, employees[0].AnnualSalary); employees = employeeManagementTest.GetEmployees(2); Assert.AreEqual(1, employees.Count); Assert.AreEqual(100, employees[0].AnnualSalary); employees = employeeManagementTest.GetEmployees(null); Assert.AreEqual(2, employees.Count); Assert.AreEqual(400, employees[0].AnnualSalary); Assert.AreEqual(100, employees[1].AnnualSalary); //employeeManagementTest.GetEmployees() }
public List <Employee> GetEmployees() { return(employeeManagement.GetEmployees()); }