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)); }
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}"); }