public void IsPossibleToDistributeBonuses_ByDefault_ReturnIfTrueIfMoneyIsEnough( decimal totalMoneyAvailable, decimal totalMoneyToDistribute, int totalEmployees, bool expected) { // Arrange var dateTimeProviderStub = SetupDateTimeProvider(); var minimumWageProviderStub = SetupMinimumWageProvider(); var employeesRepositoryStub = SetupEmployeeRepository(); var calculator = new EmployeeBonusesCalculator( dateTimeProviderStub.Object, minimumWageProviderStub.Object, employeesRepositoryStub.Object); var bonuses = new List <decimal>(); for (int e = 0; e < totalEmployees; e++) { bonuses.Add(totalMoneyToDistribute / totalEmployees); } // Act var actual = calculator.IsPossibleToDistributeBonuses(bonuses, totalMoneyAvailable); // Assert Assert.Equal(expected, actual); }
public void CalculateEmployeeBonuses_InvalidSector_ThrowsInvalidOperationException() { // Arrange var dateTimeProviderStub = SetupDateTimeProvider(); var minimumWageProviderStub = SetupMinimumWageProvider(); var employeesRepositoryStub = SetupEmployeeRepository(new List <Employee>() { new Employee(1, "Test", (Sector)6, "Job Title", 1000, new DateTime(2018, 10, 31), false) }); var calculator = new EmployeeBonusesCalculator( dateTimeProviderStub.Object, minimumWageProviderStub.Object, employeesRepositoryStub.Object); // Act Action actual = () => calculator.CalculateEmployeeBonuses().Count(); // Assert Assert.Throws <InvalidOperationException>(actual); }
public void CalculateEmployeeBonuses_BySalary_ReturnsBonus(decimal salary, decimal expected) { // Arrange var dateTimeProviderStub = SetupDateTimeProvider(); var minimumWageProviderStub = SetupMinimumWageProvider(1000.00M); var employeesRepositoryStub = SetupEmployeeRepository(new List <Employee>() { new Employee(1, "Test", Sector.Directors, "Job Title", salary, CURRENT_DATE, false) }); var calculator = new EmployeeBonusesCalculator( dateTimeProviderStub.Object, minimumWageProviderStub.Object, employeesRepositoryStub.Object); // Act var employees = calculator.CalculateEmployeeBonuses(); var actual = employees.First().Bonus; // Assert Assert.Equal(expected, actual); }