예제 #1
0
            public void CancellationChargeForBookingWithFlatChargePercentageReturnsCorrectValue()
            {
                // Arrange
                var bookingDao = MockRepository.GenerateStub<IBookingDao>();
                var cancellationPolicyManager = new CancellationPoliciesManager { BookingDao = bookingDao };
                bookingManager.CancellationPoliciesManager = cancellationPolicyManager;

                const decimal EXPECTED_CANCELLATION_CHARGE = 30;
                const int BOOKING_ID = 1;

                var booking = new Booking
                    {
                        Id = BOOKING_ID,
                        StartDate = DateTime.UtcNow,
                        EndDate = DateTime.UtcNow.AddDays(3),
                        Cost = new decimal(300),
                        CancellationDetails = new CancellationDetail()
                            {
                                CancellationType = CancellationTypeEnum.FlatCharge,
                                CancellationChargeType = CancellationChargeTypeEnum.Percentage,
                                CancellationChargeValue = 10,
                                CancellationWindowHours = null
                            }
                    };

                // Act
                var receivedCancellationCharge = bookingManager.GetCancellationChargeByBooking(booking);

                // Assert
                Assert.AreEqual(EXPECTED_CANCELLATION_CHARGE, receivedCancellationCharge, "The cancellation charge wasn't calculated accordingly");

                cancellationPolicyManager.BookingDao = new BookingDao();
                bookingManager.CancellationPoliciesManager = new CancellationPoliciesManager();
            }
예제 #2
0
            public void CancellationChargeForBookingWithWindowedChargeFixedReturnsCorrectValue()
            {
                // Arrange
                var bookingDao = MockRepository.GenerateStub<IBookingDao>();
                var cancellationPolicyManager = new CancellationPoliciesManager { BookingDao = bookingDao };
                bookingManager.CancellationPoliciesManager = cancellationPolicyManager;

                const decimal EXPECTED_CANCELLATION_CHARGE = 59;
                const int BOOKING_ID = 1;

                var booking = new Booking
                    {
                        Id = BOOKING_ID,
                        StartDate = DateTime.UtcNow,
                        EndDate = DateTime.UtcNow.AddDays(3),
                        Cost = new decimal(300),
                        CancellationDetails = new CancellationDetail
                            {
                                CancellationType = CancellationTypeEnum.WindowedCharge,
                                CancellationChargeType = CancellationChargeTypeEnum.Fixed,
                                CancellationChargeValue = EXPECTED_CANCELLATION_CHARGE,
                                CancellationWindowHours = 48,
                                DefaultCheckinDateTime = DateTime.UtcNow,
                                DefaultCheckoutDateTime = DateTime.UtcNow.AddDays(3)
                            }
                    };

                bookingDao.Expect(e => e.GetFirstNightValueByBooking(BOOKING_ID)).Return(EXPECTED_CANCELLATION_CHARGE);

                // Act
                var receivedCancellationCharge = bookingManager.GetCancellationChargeByBooking(booking);

                // Assert
                Assert.AreEqual(EXPECTED_CANCELLATION_CHARGE, receivedCancellationCharge, "The cancellation charge wasn't calculated accordingly");
                bookingDao.VerifyAllExpectations();

                cancellationPolicyManager.BookingDao = new BookingDao();
                bookingManager.CancellationPoliciesManager = new CancellationPoliciesManager();
            }
예제 #3
0
            public void CancellationChargeForBookingWithFlatChargeFirstNightReturnsCorrectValue()
            {
                // Arrange
                var bookingDao = MockRepository.GenerateStub<IBookingDao>();
                var cancellationPolicyManager = new CancellationPoliciesManager { BookingDao = bookingDao };
                bookingManager.CancellationPoliciesManager = cancellationPolicyManager;

                const int BOOKING_ID = 1;
                const decimal EXPECTED_FIRST_NIGHT_VALUE = 105;

                var booking = new Booking
                    {
                        Id = BOOKING_ID,
                        StartDate = DateTime.UtcNow,
                        EndDate = DateTime.UtcNow.AddDays(3),
                        Cost = new decimal(300),
                        CancellationDetails = new CancellationDetail
                            {
                                CancellationType = CancellationTypeEnum.FlatCharge,
                                CancellationChargeType = CancellationChargeTypeEnum.FirstNight,
                                CancellationChargeValue = null,
                                CancellationWindowHours = null
                            }
                    };
                bookingDao.Expect(e => e.GetFirstNightValueByBooking(BOOKING_ID)).Return(EXPECTED_FIRST_NIGHT_VALUE);

                // Act
                var receivedCancellationCharge = bookingManager.GetCancellationChargeByBooking(booking);

                // Assert
                Assert.AreEqual(EXPECTED_FIRST_NIGHT_VALUE, receivedCancellationCharge, "The cancellation charge wasn't calculated accordingly");
               
                cancellationPolicyManager.BookingDao = new BookingDao();
                bookingManager.CancellationPoliciesManager = new CancellationPoliciesManager();
            }