public void CreateTransactionModelForInvoiceRequestReturnsTransactionModelCorrectly() { #region Arrange // Arrange IBookingDao bookingDaoMock = MockRepository.GenerateMock<IBookingDao>(); IBusinessDao businessDaoMock = MockRepository.GenerateMock<IBusinessDao>(); IOrderDao orderDaoMock = MockRepository.GenerateMock<IOrderDao>(); IOrderReferenceDao orderReferenceMock = MockRepository.GenerateMock<IOrderReferenceDao>(); IChannelDao channelDaoMock = MockRepository.GenerateMock<IChannelDao>(); ICountryDao countryDaoMock = MockRepository.GenerateMock<ICountryDao>(); IBookingEventDao bookingEventDaoMock = MockRepository.GenerateMock<IBookingEventDao>(); IBookingEventDataDao bookingEventDataDaoMock = MockRepository.GenerateMock<IBookingEventDataDao>(); IBookingItemDao bookingItemDaoMock = MockRepository.GenerateMock<IBookingItemDao>(); IPaymentEventDao paymentEventDaoMock = MockRepository.GenerateMock<IPaymentEventDao>(); IPaymentDao paymentDaoMock = MockRepository.GenerateMock<IPaymentDao>(); ISettlementHelper settlementHelperMock = MockRepository.GenerateMock<ISettlementHelper>(); bool forceProcess = true; Booking bookingMock = new Booking { Id = GOOD_BOOKING_ID, OrderId = GOOD_ORDER_ID, BusinessId = GOOD_BUSINESS_ID, BookingReferenceNumber = GOOD_BOOKING_REF }; Model.Business.Business businessMock = new Model.Business.Business { Id = GOOD_BUSINESS_ID }; Order orderMock = new Order { Id = GOOD_ORDER_ID, Bookings = new List<Model.Booking.Booking> {bookingMock}, ChannelId = GOOD_CHANNEL_ID }; Channel channelMock = new Channel { Id = GOOD_CHANNEL_ID, DistributorId = GOOD_CHANNEL_BUSINESS_ID }; Model.Business.Business channelBusinessMock = new Model.Business.Business { Id = GOOD_CHANNEL_BUSINESS_ID }; Country countryMock = new Country { Id = GOOD_COUNTRY_ID, IsoChar2Code = UK_COUNTRY_CODE }; BookingEvent bookingEventMock = new BookingEvent { Id = GOOD_EVENT_ID, BookingId = GOOD_BOOKING_ID }; List<BookingEventData> bookingEventDataMock = new List<BookingEventData>(); var bookingPaymentMock = new Model.Booking.Payment { Id = GOOD_PAYMENT_ID }; var paymentListMock = new List<Model.Booking.Payment> { bookingPaymentMock }; List<BookingItem> bookingItemMock = new List<BookingItem>(); List<PaymentEvent> paymentEventListMock = new List<PaymentEvent>(); List<SettlementPaymentDto> settlementPaymentDtosMock = new List<SettlementPaymentDto>(); bookingDaoMock.Expect(bd => bd.GetByKey(Arg<int>.Is.Equal(GOOD_BOOKING_ID), Arg<string>.Is.Anything)).Return(bookingMock).Repeat.Never(); businessDaoMock.Expect(bu => bu.GetByKey(Arg<long>.Is.Equal(bookingMock.BusinessId), Arg<string>.Is.Equal(string.Empty))).Return(businessMock).Repeat.Once(); orderDaoMock.Expect(od => od.GetOrderWithBookingsByKey(Arg<int>.Is.Equal(GOOD_ORDER_ID), Arg<string>.Is.Anything, Arg<string>.Is.Anything, Arg<string>.Is.Anything, Arg<GetOrderWithBookingsByEnum>.Is.Equal(GetOrderWithBookingsByEnum.Id))).Return(orderMock).Repeat.Once(); orderReferenceMock.Expect( or => or.GetByOrderIdAndReferenceType(Arg<int>.Is.Equal(GOOD_ORDER_ID), Arg<ReferenceTypeEnum>.Is.Equal(ReferenceTypeEnum.EcommerceReservation))) .Return(null) .Repeat.Once(); channelDaoMock.Expect(cd => cd.GetById(Arg<int>.Is.Equal(orderMock.ChannelId.Value))) .Return(channelMock) .Repeat.Once(); businessDaoMock.Expect(bu => bu.GetByKey(Arg<long>.Is.Equal(channelMock.DistributorId.Value), Arg<string>.Is.Equal(string.Empty))) .Return(channelBusinessMock) .Repeat.Once(); countryDaoMock.Expect(cod => cod.GetByBusiness(Arg<long>.Is.Equal(bookingMock.BusinessId))) .Return(countryMock) .Repeat.Once(); bookingEventDaoMock.Expect(bed => bed.GetByKey(GOOD_EVENT_ID)).Return(bookingEventMock).Repeat.Once(); bookingEventDataDaoMock.Expect(bedd => bedd.GetAllByEventId(Arg<int>.Is.Equal(bookingEventMock.Id))) .Return(bookingEventDataMock) .Repeat.Once(); paymentDaoMock.Expect(pd => pd.GetPaymentsByOrder(Arg<int>.Is.Equal(GOOD_ORDER_ID))) .Return(paymentListMock) .Repeat.Once(); // settlement manager mocks of inner methods SettlementManager settlementManagerMock = MockRepository.GeneratePartialMock<SettlementManager>(); settlementManagerMock.Expect( sm => sm.GetPaymentByTypeAndSource(Arg<IEnumerable<Model.Booking.Payment>>.List.ContainsAll(paymentListMock), Arg<PaymentTypeEnum>.Is.Equal(PaymentTypeEnum.Payment), Arg<PaymentSourceEnum>.Is.Equal(PaymentSourceEnum.Online))) .Return(bookingPaymentMock).Repeat.Once(); bookingItemDaoMock.Expect(bid => bid.GetByBooking(Arg<int>.Is.Equal(GOOD_BOOKING_ID))) .Return(bookingItemMock) .Repeat.Once(); paymentEventDaoMock.Expect(ped => ped.GetByPaymentId(Arg<int>.Is.Equal(bookingPaymentMock.Id))) .Return(paymentEventListMock) .Repeat.Once(); settlementManagerMock.Expect( smm => smm.GetSettlementPayment( Arg<PaymentRequest>.Matches( pr => pr.BookingReferenceCode == bookingMock.BookingReferenceNumber && pr.IsoCountryCode == countryMock.IsoChar2Code))) .Return(settlementPaymentDtosMock) .Repeat.Once(); settlementManagerMock.Expect( sem => sem.SetLineItemsOnTransactionModel(Arg<TransactionModel>.Is.Anything, Arg<List<SettlementPaymentDto>>.Is.Anything, Arg<Order>.Matches( o => o.Id == orderMock.Id && o.ChannelId == orderMock.ChannelId && o.Bookings != null && o.Bookings.Count == orderMock.Bookings.Count), Arg<List<Model.Booking.Payment>>.List.ContainsAll(paymentListMock), Arg<List<PaymentEvent>>.Is.Anything)).Repeat.Once(); settlementManagerMock.Expect( sem => sem.SetGuestInfoOnTransactionModel(Arg<TransactionModel>.Is.Anything, Arg<Order>.Matches( b => b.Id == orderMock.Id && b.OrderReference == orderMock.OrderReference))).Repeat.Once(); settlementManagerMock.Expect( sem => sem.SetBookingInfoOnTransactionModel(Arg<TransactionModel>.Is.Anything, Arg<Booking>.Matches(b => b.Id == bookingMock.Id && b.OrderId == bookingMock.OrderId && b.BusinessId == bookingMock.BusinessId && b.BookingReferenceNumber == bookingMock.BookingReferenceNumber), Arg<Order>.Matches( o => o.Id == orderMock.Id && o.ChannelId == orderMock.ChannelId && o.Bookings != null && o.Bookings.Count == orderMock.Bookings.Count), Arg<BookingEvent>.Matches( be => be.Id == bookingEventMock.Id && be.BookingId == bookingEventMock.BookingId), Arg<List<BookingEventData>>.Is.Anything, Arg<Model.Business.Business>.Matches( bu => bu.Id == businessMock.Id), Arg<List<SettlementPaymentDto>>.Is.Anything, Arg<string>.Is.Anything)).Repeat.Once(); settlementManagerMock.Expect( sem => sem.SetFinancialInfoOnTransactionModel(Arg<TransactionModel>.Is.Anything, Arg<Booking>.Matches(b => b.Id == bookingMock.Id && b.OrderId == bookingMock.OrderId && b.BusinessId == bookingMock.BusinessId && b.BookingReferenceNumber == bookingMock .BookingReferenceNumber), Arg<Model.Business.Business>.Matches( bu => bu.Id == businessMock.Id), Arg<Order>.Matches( o => o.Id == orderMock.Id && o.ChannelId == orderMock.ChannelId && o.Bookings != null && o.Bookings.Count == orderMock.Bookings.Count), Arg<List<BookingItem>>.Is.Anything, Arg<decimal>.Is.Anything)).Repeat.Once(); settlementManagerMock.Expect( sem => sem.SetPaymentInfoOnTransactionModel(Arg<TransactionModel>.Is.Anything, Arg<Model.Booking.Payment>.Matches(p => p.Id == bookingPaymentMock.Id), Arg<List<SettlementPaymentDto>>.Is.Anything, Arg<Order>.Matches( o => o.Id == orderMock.Id && o.ChannelId == orderMock.ChannelId && o.Bookings != null && o.Bookings.Count == orderMock.Bookings.Count), Arg<bool>.Is.Equal(forceProcess))).Repeat.Once(); settlementManagerMock.Expect( sem => sem.SetProviderDistributorInformationOnTransactionModel(Arg<TransactionModel>.Is.Anything, Arg<Model.Business.Business>.Matches( bu => bu.Id == businessMock.Id), Arg<Model.Business.Business>.Matches( chbu => chbu.Id == channelBusinessMock.Id), Arg<Channel>.Is.Anything)).Repeat.Once(); settlementManagerMock.Expect( sem => sem.SetReservedProductOnTransactionModel(Arg<TransactionModel>.Is.Anything, Arg<Booking>.Matches(b => b.Id == bookingMock.Id && b.OrderId == bookingMock.OrderId && b.BusinessId == bookingMock.BusinessId && b.BookingReferenceNumber == bookingMock .BookingReferenceNumber), Arg<Order>.Matches( o => o.Id == orderMock.Id && o.ChannelId == orderMock.ChannelId && o.Bookings != null && o.Bookings.Count == orderMock.Bookings.Count), Arg<string>.Is.Anything)).Repeat.Once(); settlementHelperMock.Expect( helper => helper.SetMerchantInfoOnTransactionModel(Arg<TransactionModel>.Is.Anything, Arg<Model.Booking.Booking>.Is.Anything, Arg<Model.Business.Business>.Is.Anything, Arg<Model.Business.Business>.Is.Anything, Arg<List<SettlementPaymentDto>>.Is.Anything)); settlementManagerMock.BookingDao = bookingDaoMock; settlementManagerMock.BookingEventDao = bookingEventDaoMock; settlementManagerMock.BookingEventDataDao = bookingEventDataDaoMock; settlementManagerMock.BookingItemDao = bookingItemDaoMock; settlementManagerMock.BusinessDao = businessDaoMock; settlementManagerMock.ChannelDao = channelDaoMock; settlementManagerMock.CountryDao = countryDaoMock; settlementManagerMock.OrderDao = orderDaoMock; settlementManagerMock.OrderReferenceDao = orderReferenceMock; settlementManagerMock.PaymentEventDao = paymentEventDaoMock; settlementManagerMock.PaymentDao = paymentDaoMock; settlementManagerMock.SettlementHelper = settlementHelperMock; #endregion // Act TransactionModel result = settlementManagerMock.CreateTransactionModelForInvoiceRequest( GOOD_BOOKING_ID, GOOD_ORDER_ID, GOOD_EVENT_ID, forceProcess); // Assert settlementManagerMock.VerifyAllExpectations(); bookingDaoMock.VerifyAllExpectations(); bookingEventDaoMock.VerifyAllExpectations(); bookingEventDataDaoMock.VerifyAllExpectations(); bookingItemDaoMock.VerifyAllExpectations(); businessDaoMock.VerifyAllExpectations(); channelDaoMock.VerifyAllExpectations(); countryDaoMock.VerifyAllExpectations(); orderDaoMock.VerifyAllExpectations(); orderReferenceMock.VerifyAllExpectations(); paymentEventDaoMock.VerifyAllExpectations(); paymentDaoMock.VerifyAllExpectations(); settlementHelperMock.VerifyAllExpectations(); }
public void SetPaymentInfoOnTransactionModelWithPaymentIsSuccessful() { // ARRANGE const string SETTLEMENT_ACTION_CODE_PAYMENT = "PAYMENT"; TransactionModel mockModel = new TransactionModel(); var bookingPaymentMock = new Model.Booking.Payment(); Model.Order.Order orderMock = new Order() { IntegrationType = IntegrationTypeEnum.WhiteLabel }; List<SettlementPaymentDto> settlementPaymentsMock = new List<SettlementPaymentDto>() { new SettlementPaymentDto { ActionCode = SETTLEMENT_ACTION_CODE_PAYMENT } }; bool forceProcess = false; const string last4Digits = "0123"; bookingPaymentMock.CardLast4Digits = last4Digits; SettlementManager settlementManager = new SettlementManager(); // Act settlementManager.SetPaymentInfoOnTransactionModel(mockModel, bookingPaymentMock, settlementPaymentsMock, orderMock, forceProcess); // Assert Assert.AreEqual(last4Digits, mockModel.MaskedCardNumber, "Should have been set if settlement payment is present"); }
public void SetPaymentInfoOnTransactionModelWithNoPaymentNotMyWebDoesNotThrowException() { // ARRANGE TransactionModel mockModel = new TransactionModel(); var bookingPaymentMock = new Model.Booking.Payment(); List<SettlementPaymentDto> settlementPaymentsMock = new List<SettlementPaymentDto>(); Model.Order.Order orderMock = new Order() { IntegrationType = IntegrationTypeEnum.RequestResponse }; bookingPaymentMock.CardLast4Digits = "0123"; bool forceProcess = false; SettlementManager settlementManager = new SettlementManager(); // Act settlementManager.SetPaymentInfoOnTransactionModel(mockModel, bookingPaymentMock, settlementPaymentsMock, orderMock, forceProcess); // Assert Assert.IsNull(mockModel.MaskedCardNumber, "Should not have been set if settlement payment not present and not myweb or toprooms"); }
public void SetPaymentInfoOnTransactionModelWithNoPaymentAndForceProccessIsSuccessful() { // ARRANGE TransactionModel mockModel = new TransactionModel(); var bookingPaymentMock = new Model.Booking.Payment(); List<SettlementPaymentDto> settlementPaymentsMock = new List<SettlementPaymentDto>(); Model.Order.Order orderMock = new Order(); bool forceProcess = true; bookingPaymentMock.CardLast4Digits = "0123"; SettlementManager settlementManager = new SettlementManager(); // Act settlementManager.SetPaymentInfoOnTransactionModel(mockModel, bookingPaymentMock, settlementPaymentsMock, orderMock, forceProcess); // Assert Assert.IsNull(mockModel.MaskedCardNumber, "Should not have been set if settlement payment not present"); }
public void SetPaymentInfoOnTransactionModelWithNoPaymentThrowsException() { // ARRANGE TransactionModel mockModel = new TransactionModel(); var bookingPaymentMock = new Model.Booking.Payment(); List<SettlementPaymentDto> settlementPaymentsMock = new List<SettlementPaymentDto>(); Model.Order.Order orderMock = new Order() { IntegrationType = IntegrationTypeEnum.Myweb }; bool forceProcess = false; SettlementManager settlementManager = new SettlementManager(); // Act settlementManager.SetPaymentInfoOnTransactionModel(mockModel, bookingPaymentMock, settlementPaymentsMock, orderMock, forceProcess); // Assert // done in expected exception }