Beispiel #1
0
        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);
        }
Beispiel #2
0
 public FirstDataMock(PaymentRespose response)
 {
     _response = response;
 }
Beispiel #3
0
 public PayPalMock(PaymentRespose response)
 {
     _response = response;
 }