Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }