コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }