public async Task Handle_ShouldSavePayment_WhenPaymentProcessCompleted() { var request = new PaymentProcessCommand(); var paymentProcessHandler = CreatePaymentProcessHandler(); var expectedResponse = new PaymentProcessResponse { TransactionId = "123456789", Status = "Completed" }; mockBank.Setup(x => x.ProcessPayment(It.IsAny <Payment>())) .ReturnsAsync(expectedResponse); mockEfRepository.Setup(x => x.AddAsync(It.IsAny <Payment>())).ReturnsAsync(new Payment { Id = Guid.NewGuid(), CardNumber = "1234-1234-1234-4568", TransactionId = expectedResponse.TransactionId, TransactionStatus = expectedResponse.Status }); var response = await paymentProcessHandler.Handle(request, default); response.ShouldNotBeNull(); response.ShouldBeOfType <PaymentProcessResponse>(); mockBank.Verify(x => x.ProcessPayment(It.IsAny <Payment>()), Times.AtLeastOnce()); mockEfRepository.Verify(x => x.AddAsync(It.IsAny <Payment>()), Times.AtLeastOnce); }
public async Task Post_ShouldReturnSuccessfulPaymentResponse_WhenPaymentIsProcessed() { var expectedResponse = new PaymentProcessResponse { TransactionId = new Guid().ToString(), Status = "Success" }; var paymentsController = CreatePaymentsController(); mockMediator.Setup(x => x.Send(It.IsAny <PaymentProcessCommand>(), It.IsAny <CancellationToken>())) .ReturnsAsync(expectedResponse); var response = await paymentsController.Post(new PaymentProcessCommand()); response.ShouldNotBeNull(); var result = response.ShouldBeOfType <OkObjectResult>(); var paymentResponse = result.Value.ShouldBeOfType <PaymentProcessResponse>(); paymentResponse.ShouldBeSameAs(expectedResponse); }