示例#1
0
            public void CreatePaymentInvalidReceivedDateThrowsValidationException()
            {
                // Arrange
                var stubPaymentDao = MockRepository.GenerateStub<IPaymentDao>();
                var paymentManager = new PaymentManager
                {
                    PaymentDao = stubPaymentDao
                };

                var payment = new Model.Booking.Payment
                {
                    Amount = new decimal(10.00),
                    ReceivedDate = DateTime.Today.AddDays(10),
                    Currency = new Currency("GBP"),
                    PaymentMethod = new PaymentMethod { Code = PaymentMethodEnum.Cash.GetCode() },
                    PaymentSource = new PaymentSource { Code = PaymentSourceEnum.Pms.GetCode() },
                    PaymentStatus = new PaymentStatus { Code = PaymentStatusEnum.Created.GetCode() },
                    PaymentType = new PaymentType { Code = PaymentTypeEnum.Payment.GetCode() },
                    Notes = "New Payment"
                };

                stubPaymentDao.Stub(b => b.Create(payment)).WhenCalled(delegate { payment.Id = 1; });

                try
                {
                    // Act
                    paymentManager.CreatePaymentForOrder(payment, 1);

                    // Assert
                    Assert.Fail("An exception SRVEX30071 of type ValidationException should have been thrown");
                }
                catch (ValidationException ex)
                {
                    // Assert
                    Assert.AreEqual("SRVEX30071", ex.Code, "The Validation exception is not returning the right error code");
                }

                // Make sure this is reset for future tests
                paymentManager.PaymentDao = new PaymentDao();
            }
示例#2
0
            public void CreateRefundIsSuccessful()
            {
                // Arrange
                const int PAYMENT_ID = 1;
                var stubPaymentDao = MockRepository.GenerateStub<IPaymentDao>();
                var paymentManager = new PaymentManager
                {
                    PaymentDao = stubPaymentDao
                };

                var payment = new Model.Booking.Payment
                {
                    Id = PAYMENT_ID,
                    Amount = new decimal(10.00),
                    ReceivedDate = DateTime.Today,
                    Currency = new Currency("GBP"),
                    PaymentMethod = new PaymentMethod { Code = PaymentMethodEnum.Cash.GetCode() },
                    PaymentSource = new PaymentSource { Code = PaymentSourceEnum.Pms.GetCode() },
                    PaymentStatusEnum = PaymentStatusEnum.Deleted,
                    PaymentTypeEnum = PaymentTypeEnum.Refund,
                    Notes = "New Payment"
                };

                stubPaymentDao.Stub(b => b.Create(payment)).WhenCalled(delegate { payment.Id = 1; });

                // Act
                paymentManager.CreatePaymentForOrder(payment, 1);

                // Assert
                Assert.IsNotNull(payment.Id, "The payment reversal id was not attributed.");

                // Make sure this is reset for future tests
                paymentManager.PaymentDao = new PaymentDao();
            }
示例#3
0
            public void CreatePaymentCreatesEvents()
            {
                // Arrange
                var mockEventTrackingManager = MockRepository.GenerateMock<IEventTrackingManager>();
                CacheHelper.StubBusinessCacheSingleBusiness(1, "TestBus1");

                var paymentManager = new PaymentManager
                {
                    PaymentDao = MockRepository.GenerateStub<IPaymentDao>(),
                    EventTrackingManager = mockEventTrackingManager
                };

                var payment = new Model.Booking.Payment
                {
                    Id = 1,
                    OrderId = 1,
                    Amount = new decimal(10.00),
                    ReceivedDate = DateTime.Today,
                    Currency = new Currency("GBP"),
                    PaymentMethod = new PaymentMethod { Code = PaymentMethodEnum.Cash.GetCode() },
                    PaymentSource = new PaymentSource { Code = PaymentSourceEnum.Pms.GetCode() },
                    PaymentStatusEnum = PaymentStatusEnum.Created,
                    PaymentTypeEnum = PaymentTypeEnum.Payment,
                    Notes = "New Payment"                    
                };

                mockEventTrackingManager.Expect(
                    u =>
                    u.CreatePaymentEvent(Arg<int>.Is.Equal(payment.Id),
                                         Arg<PaymentEventTypeEnum>.Is.Equal(PaymentEventTypeEnum.Created), Arg<string>.Is.Equal(payment.Notes)))
                                        .Repeat.Once(); ;

                mockEventTrackingManager.Expect(
                    ev =>
                    ev.CreateOrderEvent(Arg<int>.Is.Equal(payment.OrderId),
                                        Arg<OrderEventTypeEnum>.Is.Equal(OrderEventTypeEnum.PaymentAdded), Arg<string>.Is.Equal(payment.Id.ToString()), Arg<string>.Is.Equal(payment.Notes)))
                                        .Repeat.Once();
                
                paymentManager.CreatePaymentForOrder(payment, 1);

                CacheHelper.ReAssignBusinessDaoToBusinessCache();
                // Assert
                mockEventTrackingManager.VerifyAllExpectations();
            }
示例#4
0
            protected override void RunBeforeAllTests()
            {
                base.RunBeforeAllTests();

                GuestManager guestManager = new GuestManager();
                PaymentManager paymentManager = new PaymentManager();

                Guest guest = new Guest
                {
                    BusinessId = BUSINESS_ID,
                    DefaultCultureCode = "en-GB",
                    AddressLine1 = "AL1",
                    City = "City",
                    Forename = "Bob",
                    Surname = "Smith"
                };
                guestManager.Create(guest);

                var mockOrder = new Order
                {
                    IntegrationType = IntegrationTypeEnum.Myweb,
                    OfflineSourceEnum = OfflineSourceEnum.Web,
                    CustomerCurrencyCode = "GBP",
                    OrderSourceCode = SourceType.Online.GetCode(),
                    LeadGuest = guest,
                    LeadGuestId = guest.Id.Value
                };

                orderDao.CreateOrder(BUSINESS_ID, mockOrder);

                // set up payment for the order
                setupPayment = new Model.Booking.Payment
                                   {
                                       OrderId = mockOrder.Id.Value,
                                       PaymentSourceEnum = PaymentSourceEnum.Online,
                                       PaymentTypeEnum = PaymentTypeEnum.Payment,
                                       PaymentMethodEnum = PaymentMethodEnum.AccountTransfer,
                                       Currency = new Currency(mockOrder.CustomerCurrencyCode),
                                       Amount = 30,
                                       Notes = "Test Notes",
                                       PaymentStatusEnum = PaymentStatusEnum.Created,
                                       ReceivedDate = DateTime.Now.AddDays(-5),
                                       MerchantType = MerchantTypeEnum.EviivoAccount
                                   };

                paymentManager.CreatePaymentForOrder(setupPayment, BUSINESS_ID);
            }