public void CalculateBonus(int employeeSalary, int allEmployeesSalary, int bonusPool, int expectedBonus) { // Arrange var sut = new BonusCalculator(); // Act var actualBonus = sut.Calculate(employeeSalary, allEmployeesSalary, bonusPool); // Assert Assert.That(actualBonus, Is.EqualTo(expectedBonus)); }
public void When_EmployeeNotFound_Then_Exception() { var mockEmployeeService = new Mock <IEmployeeService>(); mockEmployeeService.Setup(x => x.GetAsync(It.IsAny <int>())).ReturnsAsync((EmployeeDto)null); var testEmployeeId = 5; var bonusCalculator = new BonusCalculator(mockEmployeeService.Object); Func <Task> action = async() => { await bonusCalculator.Calculate(testEmployeeId, 1000); }; action.Should().Throw <EmployeeNotFoundException>().WithMessage($"Employee not found for id - {testEmployeeId }"); }
public async Task When_EmployeeFound_Then_CalculateBonus(int employeeId, int totalBonusPool, decimal expectedBonus) { var dbContextOptionBuilder = new DbContextOptionsBuilder <AppDbContext>(); dbContextOptionBuilder.UseInMemoryDatabase(databaseName: "HrDb"); var context = new AppDbContext(dbContextOptionBuilder.Options); //test can break if seed data changes. // we should have our own seed/mock data if (!context.Employees.Any()) { DbContextGenerator.SeedData(context); } var employeeService = new EmployeeService(context); var bonusCalculator = new BonusCalculator(employeeService); var bonus = await bonusCalculator.Calculate(employeeId, totalBonusPool); bonus.Should().NotBeNull().And.BeOfType <BonusPoolCalculatorResultDto>(); bonus.Amount.Should().Be(expectedBonus); }