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 simpleRoe = new SimpleRoe() { PayPeriodType = ppTypes.MONTHLY, FirstDayForWhichPaid = new DateTime(2021, 2, 10), LastDayForWhichPaid = new DateTime(2021, 3, 27), FinalPayPeriodDay = new DateTime(2021, 3, 31), PayPeriods = new List <PayPeriod>() { new PayPeriod(1, 1000), new PayPeriod(2, 2000) } }; var startDateGetter = A.Fake <IGetStartDateFromEndDate>(); var fullPayPeriodCreator = A.Fake <ICreateFullPayPeriods>(); A.CallTo(() => startDateGetter.Get(new DateTime(2021, 3, 31), ppTypes.MONTHLY)) .Returns(new DateTime(2021, 3, 1)); A.CallTo(() => startDateGetter.Get(new DateTime(2021, 2, 28), ppTypes.MONTHLY)) .Returns(new DateTime(2021, 2, 1)); A.CallTo(() => fullPayPeriodCreator.Create(A <PayPeriod> ._, A <DateTime> ._, A <DateTime> ._, A <DateTime> ._, A <DateTime> ._)) .Returns(new FullPayPeriod(1, 100)) .Twice(); var sut = new FullRoeCreator(startDateGetter, fullPayPeriodCreator); // Act var result = sut.Create(simpleRoe); // Assert A.CallTo(() => startDateGetter.Get(new DateTime(2021, 3, 31), ppTypes.MONTHLY)) .MustHaveHappenedOnceExactly(); A.CallTo(() => startDateGetter.Get(new DateTime(2021, 2, 28), ppTypes.MONTHLY)) .MustHaveHappenedOnceExactly(); A.CallTo(() => fullPayPeriodCreator.Create(A <PayPeriod> ._, A <DateTime> ._, A <DateTime> ._, A <DateTime> ._, A <DateTime> ._)) .MustHaveHappenedTwiceExactly(); Assert.Equal(2, result.PayPeriods.Count); }