public void TestDetail_ShouldShowCurrentAndProjectedBonusesForEmployeeMakingMoreThan100K_FY18()
        {
            //AAA
            //Arrange
            EmployeesController controllerUnderTest = new EmployeesController(mockUnitOfWork.Object, mockBonusProjector.Object);
            string employeeTestName     = "Test Employee " + DateTime.Now.ToLongTimeString();
            var    employeeToUseForTest = mockUnitOfWork.Object.DbContext.Employees.Where(e => e.Salary >= 100000).FirstOrDefault();

            mockUnitOfWork.Object.DbContext.Employees.Add(employeeToUseForTest);
            using (ShimsContext.Create())
            {
                ShimDateTime.NowGet = () => { return(DateTime.Parse("07/02/2017")); };
            }
            var bonusCalculator = new FY18BonusCalculator();

            //Act
            var returnedResult = controllerUnderTest.Details(employeeToUseForTest.Id).Result;

            Assert.AreEqual(returnedResult.GetType(), typeof(ViewResult));
            var returnedView = returnedResult as ViewResult;

            //Assert
            Assert.AreEqual(typeof(FY18BonusCalculator), controllerUnderTest.bonusCalculator.GetType());
            Assert.AreEqual(returnedView.ViewBag.BonusAmount, bonusCalculator.GetBonusPercentage(employeeToUseForTest) * employeeToUseForTest.Salary / 100);
            Assert.AreEqual(returnedView.ViewBag.NextYearProjectBonus, mockBonusProjector.Object.GetExpectedBonus(employeeToUseForTest.Salary));
        }
Exemple #2
0
        public void TestGetBonusPercentage_ValidatesCorrectBonusPercentageForEmployeesMakingMoreThan100KAndPerformanceLevel5()
        {
            //AAA

            //Arrange
            var employeeUnderTest = new Employee {
                Id = 1, Name = "Joe Doe", Salary = 110000, HireDate = DateTime.Parse("01/01/2015"), PerformanceStarLevel = 5
            };
            var    classUnderTest          = new FY18BonusCalculator();
            double expectedBonusPercentage = 44;
            //Act
            var returnedBonusPercentage = classUnderTest.GetBonusPercentage(employeeUnderTest);

            //Assert
            Assert.AreEqual(expectedBonusPercentage, returnedBonusPercentage, $"Wrong percentage value returned: {returnedBonusPercentage} , while expected is: {expectedBonusPercentage}");
        }