public void ModifyBookingThatIsUnavailableWithNoRateDefinedStillUpdatedIsSuccessful(UnavailabilityReasonCode validReason) { // Arrange var bookingDao = new Mock<IBookingDao>(); var availabilityManager = new Mock<IAvailabilityManager>(); var orderDao = new Mock<IOrderDao>(); var bookingManager = new BookingManager { BookingDao = bookingDao.Object, AvailabilityManager = availabilityManager.Object, OrderDao = orderDao.Object }; var guest = new Guest { Surname = "Smith", Id = 1 }; bookingDao.Setup(b => b.GetByKey(1, It.IsAny<string>())).Returns(BookingBuilder.SetupSimpleBooking(guest, false)); // update that changes the start date var updatedBooking = BookingBuilder.SetupSimpleBooking(guest, false); updatedBooking.StartDate = updatedBooking.StartDate.AddDays(-1); var order = new Order { OfflineSourceEnum = OfflineSourceEnum.Web, Id = updatedBooking.OrderId, OrderSourceCode = SourceType.Online.GetCode(), CustomerCurrencyCode = "GBP" }; orderDao.Setup(o => o.GetByKey(updatedBooking.OrderId, It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<GetOrderWithBookingsByEnum>())).Returns(order); bookingDao.Setup(x => x.Modify(updatedBooking, It.Is<Order>(o => o.Id == order.Id))); // mock up that it shows as not available with reason code NoRateDefined var mockSearchResult = AvailabilitySearchResultBuilder.GetSimpleAvailabilitySearchResult(1, false, validReason); availabilityManager.Setup(am => am.CheckAvailabilityForBookingModify(updatedBooking, order.CustomerCurrencyCode)).Returns(mockSearchResult); // ACT // Modify booking record, force update var modifyResult = bookingManager.ModifyBooking(false, updatedBooking); // ASSERT Assert.IsNotNull(modifyResult, "Modify was not successful"); bookingDao.VerifyAll(); availabilityManager.VerifyAll(); orderDao.VerifyAll(); }
public void UpdateAvailabilityWithRateCacheSetsCorrectUnavailableReason(AvailabilitySearchCriteria criteria, List<RoomsAvailability> roomsAvailable, List<RateCache> rateCacheAvailable, UnavailabilityReasonCode? expectedUnavailability) { //Setup in test case source var cacheDict = new Dictionary<long, List<RateCache>>(); cacheDict.Add(BUSINESS_ONE, rateCacheAvailable); availabilityManager.UpdateAvailabilityWithRateCache(criteria, roomsAvailable, cacheDict); if (roomsAvailable.Any()) { Assert.AreEqual(expectedUnavailability, roomsAvailable.First().UnavailabilityReason, "unavailability reason did not match"); } }
/// <summary> /// used when business is unavailable from the start /// </summary> /// <param name="reasonForUnavailable">reason marked for this business</param> public AvailabilityResultBusiness(UnavailabilityReasonCode reasonForUnavailable, long id) { UnavailabilityReasonCode = reasonForUnavailable; BusinessId = id; RoomTypes = new List<AvailabilityResultRoomType>(); }