private AverageIncomeCalculator GetSut() { var startDateGetter = new StartDateFromEndDateGetter(); var payPeriodCreator = new FullPayPeriodCreator(); var fullRoeCreator = new FullRoeCreator(startDateGetter, payPeriodCreator); var mainStartDateGetter = new MainStartDateGetter(); var incomeRoeGetter = new IncomeRoeGetter(); var weeklyIncomeGetter = new WeeklyIncomeGetter(incomeRoeGetter); var incomeListGetter = new IncomeListGetter(mainStartDateGetter, weeklyIncomeGetter); var result = new AverageIncomeCalculator(fullRoeCreator, incomeListGetter); return(result); }
public void ShouldWorkNormally() { // Arrange var startOfWeek = new DateTime(2021, 7, 11); var minDate = new DateTime(2021, 1, 1); var maxDate = new DateTime(2021, 12, 31); var incomeRoeGetter = A.Fake <IGetIncomeFromOneRoe>(); A.CallTo(() => incomeRoeGetter.Get(A <FullPayPeriod> ._, startOfWeek, minDate, maxDate)) .Returns(100).Once(); A.CallTo(() => incomeRoeGetter.Get(A <FullPayPeriod> ._, startOfWeek, minDate, maxDate)) .Returns(150).Once(); var sut = new WeeklyIncomeGetter(incomeRoeGetter); // Act var simpleRoe = new SimpleRoe() { LastDayForWhichPaid = maxDate, FirstDayForWhichPaid = minDate, }; var payPeriods = new List <FullPayPeriod>() { new FullPayPeriod(1, 1000), new FullPayPeriod(2, 2000) }; var fullRoe = new FullRoe(simpleRoe, payPeriods); var result = sut.Get(fullRoe, startOfWeek); // Assert A.CallTo(() => incomeRoeGetter.Get(A <FullPayPeriod> ._, A <DateTime> ._, A <DateTime> ._, A <DateTime> ._)) .MustHaveHappenedTwiceExactly(); Assert.Equal(250, result); }