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(); }
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(); }
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(); }