public Payment CreatePayment(PaymentCreationData data)
 {
     return(new Payment()
     {
         Id = data.PaymentId,
         CardNumber = data.CardNumber,
         CardHolder = data.CardHolder,
         ExecutionDate = DateTime.UtcNow,
         ExpiryYear = data.ExpiryYear,
         ExpiryMonth = data.ExpiryMonth,
         CCV = data.CCV,
         Amount = data.Amount,
         Currency = data.Currency
     });
 }
示例#2
0
        public void CreatePayment__when__BankClient_returns_a_Payment__should__save_to_repository()
        {
            var data = new PaymentCreationData();

            var bankPayment = new Payment()
            {
                Id = Guid.NewGuid().ToString()
            };

            bankClient.Setup(c => c.CreatePayment(data)).Returns(bankPayment);

            // act
            var result = paymentProcessor.CreatePayment(data);

            paymentsRepository.Verify(r => r.Save(It.IsAny <Payment>()), Times.AtLeastOnce);
        }
示例#3
0
        public void CreatePayment__when__BankClient_returns_an_error__should__return_Error_result()
        {
            var data = new PaymentCreationData();

            var bankPayment = new Payment()
            {
                Id = Guid.NewGuid().ToString()
            };

            bankClient.Setup(c => c.CreatePayment(data)).Throws <Exception>();

            // act
            var result = paymentProcessor.CreatePayment(data);

            result.IsSuccess.Should().BeFalse();
            result.Error.Should().NotBeNullOrEmpty();
            result.PaymentId.Should().BeNull();
        }
示例#4
0
        public void CreatePayment__when__BankClient_returns_a_Payment__should__return_Successfull_result()
        {
            var data = new PaymentCreationData();

            var bankPayment = new Payment()
            {
                Id = Guid.NewGuid().ToString()
            };

            bankClient.Setup(c => c.CreatePayment(data)).Returns(bankPayment);

            // act
            var result = paymentProcessor.CreatePayment(data);

            result.IsSuccess.Should().BeTrue();
            result.Error.Should().BeNull();
            result.PaymentId.Should().Be(bankPayment.Id);
        }
示例#5
0
        public PaymentCreationResult CreatePayment(PaymentCreationData data)
        {
            try
            {
                // generate the Payment Id
                data.PaymentId = Guid.NewGuid().ToString();

                var payment = bankClient.CreatePayment(data);
                paymentsRepository.Save(payment);

                // A validation error should return a Fail result
                //return PaymentCreationResult.Fail("Not enough funds");

                return(PaymentCreationResult.Success(payment));
            }
            catch (Exception exc)
            {
                logger.LogError(exc, "Failed to process payment creation");
                return(PaymentCreationResult.Fail("General error on creating payment"));
            }
        }