public void GivenADuplicatePaymentRequest_ShouldNotTalkToBank_AndShouldThrowBadRequestException() { // arrange _paymentHistoryRepo.IsDuplicate(Arg.Any <string>()).Returns(true); var handler = new ProcessPaymentHandler(_paymentHistoryRepo, _bankApi); var paymentRequest = BuildValidTestPaymentRequest(); // act var ex = Assert.Throws <BadRequestException>(() => handler.Handle(paymentRequest)); // assert Assert.Equal("Duplicate request.", ex.Message); }
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); }