Ejemplo n.º 1
0
            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();
            }
Ejemplo n.º 2
0
 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");
     }
 }
Ejemplo n.º 3
0
 /// <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>();
 }