public void TestMethodEmployeeBaseCalculationSuccessor() { const double delta = 0.00001; const double baseRate = 100; var dateTest = new DateTime(2017, 01, 01); var unitOfWorkMosk = new Mock <IMyDbContextUnitOfWork>(); var baseEmployeer = new CalculationEmployeeBase <IMyDbContextUnitOfWork>(unitOfWorkMosk.Object, ParametersCalculationSource.ParametersCalculationForEmployee); var employee = new Employee { BaseRate = baseRate, DateOfEmployment = dateTest }; Assert.AreEqual(baseRate, baseEmployeer.Calculation(employee, dateTest), delta); Assert.AreEqual(baseRate * 1.03, baseEmployeer.Calculation(employee, dateTest.AddYears(1)), delta); Assert.AreEqual(baseRate * 1.30, baseEmployeer.Calculation(employee, dateTest.AddYears(10)), delta); Assert.AreEqual(baseRate * 1.30, baseEmployeer.Calculation(employee, dateTest.AddYears(15)), delta); }
public void TestMethodSalesmanCalculationSuccessorWorkers() { const double delta = 0.00001; const double baseRate = 1000; var dateTest = new DateTime(2017, 01, 01); var unitOfWorkMosk = new Mock <IMyDbContextUnitOfWork>(); var workers = new List <Employee> { new Employee { ID = 1, BaseRate = baseRate, DateOfEmployment = dateTest }, new Employee { ID = 2, BaseRate = baseRate, DateOfEmployment = dateTest } }; var manager = new Manager { ID = 3, BaseRate = baseRate, DateOfEmployment = dateTest }; var workersSalesmans = new List <Employee> { manager, new Employee { ID = 4, BaseRate = baseRate, DateOfEmployment = dateTest } }; var employee = new Salesman { BaseRate = baseRate, DateOfEmployment = dateTest }; var mock = new Mock <CalculationEmployeeSalesman <IMyDbContextUnitOfWork> >(unitOfWorkMosk.Object, ParametersCalculationSource.ParametersCalculationForSalesman) { CallBase = true }; //salesman mock.Protected() .Setup <IEnumerable <Employee> >("GetWorkers", employee) .Returns(workersSalesmans.AsEnumerable()); //manager mock.Protected() .Setup <IEnumerable <Employee> >("GetWorkers", workersSalesmans[0]) .Returns(workers.AsEnumerable()); //employers mock.Protected() .Setup <IEnumerable <Employee> >("GetWorkers", workersSalesmans[1]) .Returns(new LinkedList <Employee>()); mock.Protected() .Setup <IEnumerable <Employee> >("GetWorkers", workers[0]) .Returns(workers.AsEnumerable()); mock.Protected() .Setup <IEnumerable <Employee> >("GetWorkers", workers[1]) .Returns(workers.AsEnumerable()); var mockManager = new Mock <CalculationEmployeeManager <IMyDbContextUnitOfWork> >(unitOfWorkMosk.Object, ParametersCalculationSource.ParametersCalculationForManager) { CallBase = true }; //manager mockManager.Protected() .Setup <IEnumerable <Employee> >("GetWorkers", manager) .Returns(workers.AsEnumerable()); var baseEmployeer = new CalculationEmployeeBase <IMyDbContextUnitOfWork>(unitOfWorkMosk.Object, ParametersCalculationSource.ParametersCalculationForEmployee); var baseManager = mockManager.Object; var baseSalesman = mock.Object; baseSalesman.SetSuccessor(baseManager); baseManager.SetSuccessor(baseEmployeer); Assert.AreEqual(baseRate + (baseRate * 0.003) * 3 + (baseRate + (0.005 * baseRate) * 2) * 0.003, baseSalesman.Calculation(employee, dateTest), delta); }