Пример #1
0
            protected override void RunBeforeAllTests()
            {
                base.RunBeforeAllTests();

                var businessManager = new BusinessManager();
                var roomTypeManager = new RoomTypeManager();
                var roomManager = new RoomManager();
                var orderManager = new OrderManager();


                //Create a business
                var paymentMethod = new BusinessPaymentMethod
                    {
                        BusinessId = BUSINESS_ID,
                        CurrencyCode = CURRENCY,
                        PaymentMethodCode = PaymentMethodEnum.Cash.GetCode()
                    };

                var provider = new Provider
                    {
                        RoomCount = ROOM_COUNT,
                        ContentId = BUSINESS_ID.ToString(),
                        ProviderTypeCode = PROVIDER_TYPE,
                    };

                var business = new Model.Business.Business
                    {
                        BusinessStatusCode = "A",
                        BusinessTypeCode = "P",
                        Name = "Test Business",
                        ShortName = "Test",
                        ReferenceCode = "B001",
                        IsTaxRegistered = true,
                        TaxRegistrationNumber = "12345",
                        BusinessRegistrationNumber = "12345",
                        AddressLine1 = "5 Main Road",
                        AddressLine2 = "Twickenham",
                        City = "London",
                        StateProvinceId = 386,
                        PostCode = "TW2 5SE",
                        CountryId = 16,
                        BusinessTelephoneNumber = "07448752114",
                        TimeZoneId = 36,
                        DefaultCultureCode = CULTURE,
                        WorkingCurrencyCode = CURRENCY,
                        UpdatedByUserId = new Guid("11111111-1111-1111-1111-111111111111"),
                        Provider = provider,
                        BusinessPaymentMethods = new List<BusinessPaymentMethod> {paymentMethod}
                    };

                var businessId = businessManager.CreateBusiness(business);


                // Create a room type
                
                var ratePlan = new BaseRatePlan
                    {
                        BusinessId = businessId,
                        CurrencyCode = CURRENCY,
                        MaxAdults = 2,
                        MaxChildren = 2,
                        MaxOccupancy = 3,
                        BoardBasis = new EnumEntity {Code = "BK"},
                        CancellationClass = new EnumEntity {Code = "FR"},
                        RackRate = new decimal(120.0),
                        SellAtRackRate = true,
                        RatePlanType = new RatePlanType {Type = RatePlanTypeEnum.Base},
                        Rates = new RatePlanRate{BusinessId = businessId, MonRate = 120, MonMinStay = 120},
                        UpdatedByUserId = new Guid("11111111-1111-1111-1111-111111111111"),
                    };

                var roomType = new RoomType
                    {
                        BusinessId = businessId,
                        RoomClass = roomTypeManager.GetRoomClasses(CULTURE).FirstOrDefault(),      //new RoomClass { Code = "DBL" },
                        QualityType = roomTypeManager.GetQualityTypes(CULTURE).FirstOrDefault(),   //new QualityType { Code = "APT" },
                        BathroomType = roomTypeManager.GetBathroomTypes(CULTURE).FirstOrDefault(), //new BathroomType { Code = "SP" },
                        Code = "DBL99",
                        ServiceFrequency = new EnumEntity { Code = "B" },
                        UpdatedByUserId = new Guid("11111111-1111-1111-1111-111111111111"),
                        BaseRatePlan = ratePlan,
                        BaseRatePlanId = ratePlan.Id,
                        Aspect = new Aspect { Code = "BAL"},                    
                    };
                
                roomTypeManager.CreateRoomTypeAndBaseRatePlan(roomType);
                roomType = roomTypeManager.GetRoomTypesAndBaseRatePlans(businessId, CULTURE).First();
                ratePlan = roomType.BaseRatePlan;


                //Create a room
                var roomId = roomManager.CreateRoom("TestRoom", roomType.Id, businessId);


                //Create an order
                var booking = new Booking
                {
                    BusinessId = businessId,
                    Guest = new Guest { DefaultCultureCode = CULTURE, Surname = "TestSurname", BusinessId = businessId },
                    StartDate = new DateTime(2014, 2, 10, 0, 0, 0, DateTimeKind.Utc),
                    EndDate = new DateTime(2014, 2, 12, 0, 0, 0, DateTimeKind.Utc),
                    NumberOfAdults = 2,
                    NumberOfChildren = 1,
                    Cost = new decimal(120.5),
                    BookingStatus = new EnumEntity { Code = BookingStatusType.CONFIRMED },
                    RoomTypeId = roomType.Id,
                    RoomId = roomId,
                    RatePlanId = ratePlan.Id,
                    Notes = "Testing note",
                    BookingScenarioType = BookingScenarioTypeEnum.OnAccountBooking,
                    RateType = new EnumEntity { Code = RateType.BEST_AVAILABLE_RATE },
                    CheckinStatus = new EnumEntity { Code = CheckinStatusOptions.NOTCHECKEDIN },
                    IsAvailabilityIgnored = true,
                    BoardBasis = BoardBasisTypeEnum.BreakfastIncluded,
                    CancellationDetails = new CancellationDetail()
                };

                var order = new Order
                {
                    OfflineSourceEnum = OfflineSourceEnum.Web,
                    OrderSourceCode = SourceType.Pms.GetCode(),
                    CustomerCurrencyCode = CURRENCY,
                    Bookings = new List<Booking> { booking },
                    CustomerCultureCode = "en-GB"
                };
                
                // Mock email manager so it doesn't send emails
                var emailManager = new Mock<IEmailManager>();
                orderManager.EmailManager = emailManager.Object;

                emailManager.Setup(x => x.SendConfirmationEmails(order)).Returns(true);

                orderManager.CreateOrder(businessId, order);
            }
Пример #2
0
            public void CreateRoomOfDeletedRoomUpdatesStatusAndRoomType()
            {
                // Arrange
                const string EXISTING_ROOM_NAME = "Room A";
                const int BUSINESS_ID = 1003;
                const int ROOM_TYPE_ID = 234;
                const int UPDATED_ROOM_TYPE_ID = 345;
                const int ROOM_ID = 5;

                var roomManager = new RoomManager();
                var mockRoom = new Model.Room.Room
                                   {
                                       Id = ROOM_ID,
                                       BusinessId = BUSINESS_ID,
                                       RoomTypeId = ROOM_TYPE_ID,
                                       Name = EXISTING_ROOM_NAME,
                                       RoomStatusCode = RoomStatusCodes.DELETED
                                   };

                var roomDao = MockRepository.GenerateStub<IRoomDao>();
                roomDao.Stub(r => r.GetByName(EXISTING_ROOM_NAME, BUSINESS_ID)).Return(mockRoom).Repeat.Twice();
                roomDao.Stub(r => r.Modify(Arg<Model.Room.Room>.Matches(rm => rm.Id == ROOM_ID &&
                                                                              rm.BusinessId == BUSINESS_ID &&
                                                                              rm.RoomTypeId == UPDATED_ROOM_TYPE_ID &&
                                                                              rm.Name == EXISTING_ROOM_NAME))).Return(true).Repeat.Once();
                roomManager.RoomDao = roomDao;
                
                var bookingManagerMock = MockRepository.GenerateMock<IBookingManager>();
                bookingManagerMock.Expect(bm => bm.GetByRoom(Arg<int>.Is.Equal(ROOM_ID), Arg<string>.Is.Anything)).Return(new List<Booking>()).Repeat.Once();
                roomManager.BookingManager = bookingManagerMock;

                var businessEventDao = MockRepository.GenerateStub<IEventTrackingManager>();
                businessEventDao.Expect(b => b.CreateBusinessEventAsync(Arg<long>.Is.Equal(BUSINESS_ID), Arg<BusinessEventTypesEnum>.Is.Equal(BusinessEventTypesEnum.RoomModified), Arg<string>.Is.Anything, Arg<string>.Is.Anything));
                roomManager.EventTrackingManager = businessEventDao;

                // Act
                int createdRoomId = roomManager.CreateRoom(EXISTING_ROOM_NAME, UPDATED_ROOM_TYPE_ID, BUSINESS_ID);

                // Assert
                Assert.AreEqual(ROOM_ID, createdRoomId, "Created room id of deleted room should have been returned");
                businessEventDao.VerifyAllExpectations();
                roomDao.VerifyAllExpectations();
                bookingManagerMock.VerifyAllExpectations();
            }  
Пример #3
0
            public void CreateRoomNameShouldNotbeEmpty()
            {
                // Arrange
                string existingRoomName = string.Empty;
                const int BUSINESS_ID = 1003;
                const int ROOM_TYPE_ID = 234;

                var roomManager = new RoomManager();

                try
                {
                    // Act
                    roomManager.CreateRoom(existingRoomName, ROOM_TYPE_ID, BUSINESS_ID);

                    // Assert
                    Assert.Fail("An exception SRVEX30086 of type ValidationException should have been thrown");
                }
                catch (ValidationException ex)
                {
                    // Assert
                    Assert.AreEqual("SRVEX30086", ex.Code, "The Validation exception is not returning the right error code");
                }
            }
Пример #4
0
            public void CreateRoomWithExistingNameInBusinessThrowException()
            {
                // Arrange
                const string EXISTING_ROOM_NAME = "Room A";
                const int BUSINESS_ID = 1003;
                const int ROOM_TYPE_ID = 234;

                var roomManager = new RoomManager();

                var roomDao = MockRepository.GenerateStub<IRoomDao>();
                roomDao.Stub(r => r.GetByName(EXISTING_ROOM_NAME, BUSINESS_ID)).Return(new Model.Room.Room
                    {
                        Name = EXISTING_ROOM_NAME,
                        RoomStatusCode = RoomStatusCodes.ACTIVE
                    });

                roomManager.RoomDao = roomDao;

                var businessEventDao = MockRepository.GenerateStub<IEventTrackingManager>();
                roomManager.EventTrackingManager = businessEventDao;

                try
                {
                    // Act
                    roomManager.CreateRoom(EXISTING_ROOM_NAME, ROOM_TYPE_ID, BUSINESS_ID);

                    // Assert
                    Assert.Fail("An exception SRVEX30085 of type ValidationException should have been thrown");
                }
                catch (ValidationException ex)
                {
                    // Assert
                    Assert.AreEqual("SRVEX30085", ex.Code, "The Validation exception is not returning the right error code");
                }
            }
Пример #5
0
            public void CreateRoomCreatesBusinessEventTest()
            {
                // Arrange
                const string ROOM_NAME = "Room 1";
                const int BUSINESS_ID = 1003;
                const int ROOM_TYPE_ID = 234;

                var roomManager = new RoomManager();

                var businessEventDao = MockRepository.GenerateMock<IEventTrackingManager>();
                businessEventDao.Expect(b => b.CreateBusinessEventAsync(Arg<long>.Is.Equal(BUSINESS_ID), Arg<BusinessEventTypesEnum>.Is.Equal(BusinessEventTypesEnum.RoomAdded), Arg<string>.Is.Anything, Arg<string>.Is.Anything));
                roomManager.EventTrackingManager = businessEventDao;

                var roomDao = MockRepository.GenerateStub<IRoomDao>();
                roomManager.RoomDao = roomDao;

                // Act
                roomManager.CreateRoom(ROOM_NAME, ROOM_TYPE_ID, BUSINESS_ID);

                // Assert
                businessEventDao.VerifyAllExpectations();
            }
Пример #6
0
            public void CreateRoomCallsDaoWithRoomDataPopulatedAccordinglyTest()
            {
                // Arrange
                const string ROOM_NAME = "Room 1";
                const int BUSINESS_ID = 1003;
                const int ROOM_TYPE_ID = 234;

                var roomManager = new RoomManager();

                var roomDao = MockRepository.GenerateMock<IRoomDao>();
                roomDao.Expect(r => r.Create(Arg<Room>.Matches(ro => ro.BusinessId == BUSINESS_ID 
                    && ro.Name == ROOM_NAME
                    && ro.IsAvailableOnline == true
                    && ro.IsCombined == false
                    && ro.RoomStatusCode == RoomStatusCodes.ACTIVE))); 
                roomManager.RoomDao = roomDao;

                var businessEventDao = MockRepository.GenerateStub<IEventTrackingManager>();
                roomManager.EventTrackingManager = businessEventDao;

                // Act
                roomManager.CreateRoom(ROOM_NAME, ROOM_TYPE_ID, BUSINESS_ID);

                // Assert
                roomDao.VerifyAllExpectations();
            }