public void GivenAPaymentRequest_IfAcceptedByTheBank_ShouldReturnSuccessful() { // arrange var paymentRequest = BuildValidTestPaymentRequest(); _bankApi.MakePayment(paymentRequest).Returns(true); var handler = new ProcessPaymentHandler(_paymentHistoryRepo, _bankApi); // act var result = handler.Handle(paymentRequest); // assert Assert.True(result); }
public bool Handle(PaymentRequest paymentRequest) { if (_paymentHistoryRepo.IsDuplicate(paymentRequest.RequestId)) { throw new BadRequestException("Duplicate request."); } var isSuccessfulPayment = _bankApi.MakePayment(paymentRequest); //(assume response bool for simplicity although in reality will prob be http) if (isSuccessfulPayment) { _paymentHistoryRepo.LogPayment(Utils.MapToLoggedPaymentRequest(paymentRequest, true)); return(true); } _paymentHistoryRepo.LogPayment(Utils.MapToLoggedPaymentRequest(paymentRequest, false)); return(false); }