public async Task OrderService_ProcessOrderAsync_ReturnsFailResult( Receipt receipt, Order order, Payment payment, bool expected) { // Arrange var paymentResponse = new PaymentRespose() { Code = "400", Result = "FAIL", Status = "FAIL" }; _orderValidatorMock.Setup(m => m.Validate(order)); _paymentFactoryMock.Setup(m => m.CreatePaymentGateway(order.Gateway)).Returns((PaymentGatewayType type) => { switch (type) { case PaymentGatewayType.FirstData: return(new FirstDataMock(paymentResponse)); case PaymentGatewayType.PayPal: return(new PayPalMock(paymentResponse)); } return(null); }); _paymentOrderBuilder.Setup(m => m.Build(It.IsAny <Order>(), It.IsAny <System.Collections.Specialized.NameValueCollection>())).Returns(payment); _receiptBuilderMock.Setup(m => m.Build(It.IsAny <Order>())).Returns(receipt); // Act var actual = await _orderService.ProcessOrderAsync(order); // Assert Assert.AreEqual(expected, actual.IsSuccess); Assert.AreEqual(paymentResponse.Status, actual.ErrorMessage); // Expected _orderValidatorMock.Verify(m => m.Validate(order), Times.Once); _paymentFactoryMock.Verify(m => m.CreatePaymentGateway(order.Gateway), Times.Once); _paymentOrderBuilder.Verify(m => m.Build(It.IsAny <Order>(), It.IsAny <System.Collections.Specialized.NameValueCollection>()), Times.Once); _receiptBuilderMock.Verify(m => m.Build(It.IsAny <Order>()), Times.Never); }
public FirstDataMock(PaymentRespose response) { _response = response; }
public PayPalMock(PaymentRespose response) { _response = response; }