Beispiel #1
0
 public GetAvailableBookingTermsQuery(Guid facilityId, Guid offerId, DateTime dateFrom, DateTime dateTo, BookingRulesData bookingRules)
 {
     FacilityId   = facilityId;
     OfferId      = offerId;
     DateFrom     = dateFrom;
     DateTo       = dateTo;
     BookingRules = bookingRules;
 }
Beispiel #2
0
        public async Task GetAvailableBookingDatesHandle_SchedulesAndBookingsExist_ReturnsCorrectTerms(
            int offerDuration,
            DateTime dateFrom,
            DateTime dateTo,
            BookingRulesData bookingRulesData,
            List <EmployeeAvailability> availabilities,
            List <BookedTerm> bookedTerms,
            List <AvailableBookingTermDto> expected)
        {
            var scheduleRepoMock = new Mock <IScheduleQueryRepository>();
            var bookingRepoMock  = new Mock <IBookingQueryRepository>();
            var offerRepoMock    = new Mock <IOfferQueryRepository>();

            scheduleRepoMock.Setup(s => s.GetAllAvailabilities(It.IsAny <DateTime>(), It.IsAny <DateTime>(), It.IsAny <Guid>())).ReturnsAsync(availabilities);
            bookingRepoMock.Setup(b => b.GetBookedTerms(It.IsAny <Guid>(), It.IsAny <DateTime>(), It.IsAny <DateTime>())).ReturnsAsync(bookedTerms);
            offerRepoMock.Setup(o => o.GetOfferDuration(It.IsAny <Guid>(), It.IsAny <Guid>())).ReturnsAsync((short)offerDuration);

            var result = await new GetAvailableBookingTermsQueryHandler(scheduleRepoMock.Object, bookingRepoMock.Object, offerRepoMock.Object)
                         .Handle(new GetAvailableBookingTermsQuery(
                                     Guid.NewGuid(),
                                     Guid.NewGuid(),
                                     dateFrom,
                                     dateTo,
                                     bookingRulesData),
                                 new System.Threading.CancellationToken());

            Assert.Equal(expected.Count, result.Count());
            for (int i = 0; i < expected.Count; i++)
            {
                var expectedAvailability = expected[i];
                var resultAvailability   = result.ElementAt(i);
                Assert.Equal(expectedAvailability.Date, resultAvailability.Date);
                Assert.Equal(expectedAvailability.AvailableEmployeeIds.Count(), resultAvailability.AvailableEmployeeIds.Count());
                foreach (var expectedEmployeeId in expectedAvailability.AvailableEmployeeIds)
                {
                    Assert.Contains(expectedEmployeeId, resultAvailability.AvailableEmployeeIds);
                }
                Assert.Equal(expectedAvailability.UnavailableEmployees.Count(), resultAvailability.UnavailableEmployees.Count());
                foreach (var expectedUnavailability in expectedAvailability.UnavailableEmployees)
                {
                    Assert.Contains(expectedUnavailability.EmployeeId, resultAvailability.UnavailableEmployees.Select(u => u.EmployeeId));
                }
            }
        }