public void ShouldWorkNormally()
        {
            // Arrange
            var applicationDate = new DateTime(2021, 6, 22);
            var startDate       = new DateTime(2021, 6, 1);

            var mainStartDateGetter = A.Fake <IGetMainStartDate>();
            var weeklyIncomeGetter  = A.Fake <IGetIncomeForOneWeek>();

            A.CallTo(() => mainStartDateGetter.Get(A <DateTime> ._, A <DateTime> ._))
            .Returns(startDate);

            A.CallTo(() => weeklyIncomeGetter.Get(A <FullRoe> ._, A <DateTime> ._))
            .Returns(10);

            var sut = new IncomeListGetter(mainStartDateGetter, weeklyIncomeGetter);

            // Act
            var simpleRoe = new SimpleRoe()
            {
                LastDayForWhichPaid  = new DateTime(2021, 6, 21),
                FirstDayForWhichPaid = new DateTime(2021, 1, 1),
            };
            var payPeriods = new List <FullPayPeriod>()
            {
                new FullPayPeriod(1, 1000),
                new FullPayPeriod(2, 2000)
            };
            var fullRoe = new FullRoe(simpleRoe, payPeriods);
            var result  = sut.Get(applicationDate, fullRoe);

            // Assert
            A.CallTo(() => mainStartDateGetter.Get(A <DateTime> ._, A <DateTime> ._))
            .MustHaveHappenedOnceExactly();

            A.CallTo(() => weeklyIncomeGetter.Get(A <FullRoe> ._, A <DateTime> ._))
            .MustHaveHappened(3, Times.Exactly);

            Assert.Equal(3, result.Count);
        }
Ejemplo n.º 2
0
        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);
        }