public TransactionPayment Post(PaymentDetailsRequest payment) { var transactionDetails = new TransactionPaymentDetails(payment); return(new TransactionPayment { TransactionId = transactionDetails.GetHashCode(), Payment = transactionDetails, Status = PaymentStatus.Success }); }
public void GetShouldCallRepositoryAndReturnTransaction() { var merchandId = 1; var transactionId = 1; var expectedPayment = new TransactionPaymentDetails() { Amount = 1, CardNumber = 1, CCV = 1, SupplierId = "1", Timestamp = DateTime.MaxValue }; var expectedTransaction = new TransactionPayment() { Status = PaymentStatus.Success, TransactionId = transactionId, Payment = expectedPayment }; var mockApi = new Mock <IPaymentApi>(); var mockRepo = new Mock <IPaymentRepository>(); mockRepo.Setup(a => a.Get(It.IsAny <int>(), It.IsAny <int>())) .Returns(Task.FromResult(expectedTransaction)); var sut = new Services.PaymentService(mockApi.Object, mockRepo.Object); var transaction = sut.Get(merchandId, transactionId).Result; Assert.NotNull(transaction); Assert.Equal(expectedTransaction.Status, transaction.Status); Assert.Equal(expectedTransaction.TransactionId, transaction.TransactionId); var payment = transaction.Payment; Assert.NotNull(payment); Assert.Equal(expectedPayment.Amount, payment.Amount); Assert.Equal(expectedPayment.CardNumber, payment.CardNumber); Assert.Equal(expectedPayment.CCV, payment.CCV); Assert.Equal(merchandId, payment.MerchantId); Assert.Equal(expectedPayment.Timestamp, payment.Timestamp); mockRepo.Verify(a => a.Get( It.Is <int>(m => m == merchandId), It.Is <int>(t => t == transactionId) ), Times.Once); }
public void ShouldParseApiResponse() { var transactionPaymentDetails = new TransactionPaymentDetails() { Amount = 1, CardNumber = 1, CCV = 1, SupplierId = SupplierId, Timestamp = DateTime.MaxValue }; var paymentDetails = new MerchantPaymentDetails() { Amount = 1, CardNumber = 1, CCV = 1, MerchantId = 1, Timestamp = DateTime.MaxValue }; var contentStr = $"{{ \"transactionId\": 1, \"status\": 1, " + $"\"payment\": " + JsonConvert.SerializeObject(transactionPaymentDetails) + $"}}"; var response = new HttpResponseMessage() { StatusCode = System.Net.HttpStatusCode.OK, Content = new StringContent(contentStr) }; var mockHandler = PaymentApiHelper.CreateMockMessageHandler(response); var client = new HttpClient(mockHandler.Object); var sut = new External.PaymentApi(client, DummyUrl); var result = sut.ProcessPayment(paymentDetails).Result; Assert.NotNull(result); var transaction = result as TransactionPayment; Assert.NotNull(transaction); Assert.Equal(1, transaction.TransactionId); Assert.Equal(PaymentStatus.Success, transaction.Status); Assert.Equal(SupplierId, transaction.Payment.SupplierId); }
public ReservationTransaction AddStripeChargeToPendingReservation(string currentUserId, string userIdFor, int reservationId, string tokenId, decimal amount) { var stripePaymentDetails = new TransactionStripeDetails { TokenId = tokenId }; var transactionPaymentDetails = new TransactionPaymentDetails { TransactionStripeDetails = stripePaymentDetails }; var resTransaction = new ReservationTransaction { TransactionPaymentDetails = transactionPaymentDetails, DateCreated = DateTime.UtcNow, DateCompleted = DateTime.UtcNow, UserTransactionCompletedById = currentUserId, UserTransactionIsForId = userIdFor, TransactionType = Convert.ToInt32(TransactionTypeEnum.CHARGE), AmountCharged = amount, TransactionStatusId = Convert.ToInt32(TransactionStatusEnum.PENDING) }; var trans = new TransactionsForReservations { DateLinked = DateTime.UtcNow, ReservationTransaction = resTransaction, }; var reservation = this.dbContext.ReservationGroup.FirstOrDefault(x => x.Id == reservationId); if (reservation.StatusId != Convert.ToInt32(ReservationGroupStatusEnum.PROCESSING)) { throw new Exception(); } reservation.StatusDate = DateTime.UtcNow; trans.ReservationGroupId = reservation.Id; this.dbContext.TransactionsForReservations.Add(trans); return(resTransaction); }