public void HolidaysAggregatorAggreagatesHolidaysFromPassedHolidayFactories() { var firstDate = new DateTime(2018, 1, 1); var secondDate = new DateTime(2018, 1, 5); var expected = new List <DateTime>() { new DateTime(2018, 1, 2), new DateTime(2018, 1, 3), }; var holidayMock1 = new Mock <IHolidaysFactory>(); var holidayMock2 = new Mock <IHolidaysFactory>(); holidayMock1.Setup(h => h.CreateHolidays(It.Is <DateTime>(d => d.Equals(firstDate)), It.Is <DateTime>(d => d.Equals(secondDate)))).Returns(new List <DateTime>() { new DateTime(2018, 1, 2) }); holidayMock2.Setup(h => h.CreateHolidays(It.Is <DateTime>(d => d.Equals(firstDate)), It.Is <DateTime>(d => d.Equals(secondDate)))).Returns(new List <DateTime>() { new DateTime(2018, 1, 3) }); IHolidaysFactory sut = new HolidaysAggregator(new List <IHolidaysFactory>() { holidayMock1.Object, holidayMock2.Object }); Assert.That(sut.CreateHolidays(firstDate, secondDate), Is.EquivalentTo(expected)); holidayMock1.VerifyAll(); holidayMock2.VerifyAll(); }
public void BusinessDayCounterIntegrationWithAnnualHolidaysTests() { var newYear = new FirstWeekdayHolidayShiftingDecorator(new FixedDateHolidaysFactory(1, 1)); var christmas = new FixedDateHolidaysFactory(12, 25); var boxing = new FixedDateHolidaysFactory(12, 26); var queenDay = new DayOfMonthHolidaysFactory(6, DayOfWeek.Monday, 2); var aggregator = new HolidaysAggregator(new List <IHolidaysFactory>() { newYear, christmas, boxing, queenDay }); var counter = new BusinessDayCounter(); Assert.That(counter.BusinessDaysBetweenTwoDates(new DateTime(2016, 12, 20), new DateTime(2018, 2, 1), aggregator), Is.EqualTo(291 - 6)); }