Exemplo n.º 1
0
        public void PlaceOrder_WhenPaymentProcessingSucceeds_ShouldCreatePurchaseOrder()
        {
            var cartTotal = new Money(1, Currency.USD);

            _orderGroupCalculatorMock.Setup(x => x.GetTotal(It.IsAny <IOrderGroup>())).Returns(() => cartTotal);

            var purchaseOrderMock = Mock.Of <IPurchaseOrder>(x => x.OrderNumber == "123");

            _orderRepositoryMock.Setup(x => x.Load <IPurchaseOrder>(It.IsAny <int>())).Returns(purchaseOrderMock);

            _orderRepositoryMock.Setup(x => x.SaveAsPurchaseOrder(It.IsAny <ICart>()))
            .Returns(() => new OrderReference(0, "", Guid.Empty, null));

            var cart = new FakeCart(new MarketImpl(MarketId.Empty), Currency.SEK);

            cart.GetFirstForm().Payments.Add(new FakePayment {
                Status = PaymentStatus.Processed.ToString(), Amount = cartTotal.Amount
            });

            var modelState = new ModelStateDictionary();

            var viewModel = new CheckoutViewModel
            {
                BillingAddress = new AddressModel {
                    AddressId = "billingAddress"
                },
                Payment = new Mock <CashOnDeliveryPaymentOption>(null, null, null, null, null).Object
            };

            var result = _subject.PlaceOrder(cart, modelState, viewModel);

            Assert.Equal(purchaseOrderMock, result);
            Assert.Equal(0, modelState.Count(x => x.Value.Errors.Count > 0));
        }
        public void PlaceOrder_WhenRequestInventoryHasAnIssue_ShouldReturnNull()
        {
            var cartTotal = new Money(1, Currency.USD);

            _orderGroupCalculatorMock.Setup(x => x.GetTotal(It.IsAny <IOrderGroup>())).Returns(() => cartTotal);

            _orderRepositoryMock.Setup(x => x.Load <IPurchaseOrder>(It.IsAny <int>())).Returns(new Mock <IPurchaseOrder>().Object);

            _orderRepositoryMock.Setup(x => x.SaveAsPurchaseOrder(It.IsAny <ICart>()))
            .Returns(() => new OrderReference(0, "", Guid.Empty, null));

            var returnObject = new Mock <Dictionary <ILineItem, IList <ValidationIssue> > >();

            returnObject.Object.Add(new Mock <ILineItem>().Object, new List <ValidationIssue>()
            {
                ValidationIssue.AdjustedQuantityByAvailableQuantity
            });

            _cartServiceMock
            .Setup(x => x.RequestInventory(It.IsAny <ICart>()))
            .Returns(returnObject.Object);

            var cart = new FakeCart(new MarketImpl(MarketId.Empty), Currency.SEK)
            {
                OrderLink = new OrderReference(1, "", Guid.Empty, null)
            };

            cart.GetFirstForm().Payments.Add(new FakePayment {
                Status = PaymentStatus.Processed.ToString(), Amount = cartTotal.Amount
            });

            var modelState = new ModelStateDictionary();

            var viewModel = new CheckoutViewModel
            {
                BillingAddress = new AddressModel {
                    AddressId = "billingAddress"
                },
                Payment = new Mock <FakePaymentMethod>("PaymentMethod").Object
            };

            string redirectUrl;
            var    result = _subject.PlaceOrder(cart, modelState, out redirectUrl);

            Assert.Null(result);
            Assert.Equal(1, modelState.Count(x => x.Value.Errors.Count > 0));
        }
Exemplo n.º 3
0
        public void PlaceOrder_WhenPaymentProcessingFails_ShouldReturnNullAndAddModelError()
        {
            var cartTotal = new Money(1, Currency.USD);

            _orderGroupCalculatorMock.Setup(x => x.GetTotal(It.IsAny <IOrderGroup>())).Returns(() => cartTotal);

            _orderRepositoryMock.Setup(x => x.Load <IPurchaseOrder>(It.IsAny <int>())).Returns(new Mock <IPurchaseOrder>().Object);

            var orderReference = new OrderReference(0, "", Guid.Empty, null);

            _orderRepositoryMock.Setup(x => x.SaveAsPurchaseOrder(It.IsAny <ICart>())).Returns(() => orderReference);

            var cart = new FakeCart(new MarketImpl(MarketId.Empty), Currency.SEK);

            cart.GetFirstForm().Payments.Add(new FakePayment {
                Status = PaymentStatus.Processed.ToString(), Amount = 1
            });

            var modelState = new ModelStateDictionary();

            var paymentMethodMock = new Mock <CashOnDeliveryPaymentMethod>(null, null);

            paymentMethodMock.Setup(x => x.PostProcess(It.IsAny <IPayment>())).Throws(new PaymentException("", "", ""));

            var viewModel = new CheckoutViewModel
            {
                BillingAddress = new AddressModel {
                    AddressId = "billingAddress"
                },
                Payment = new PaymentMethodViewModel <PaymentMethodBase>
                {
                    PaymentMethod = paymentMethodMock.Object
                }
            };

            var result = _subject.PlaceOrder(cart, modelState, viewModel);

            Assert.Null(result);
            Assert.Equal(1, modelState.Count(x => x.Value.Errors.Count > 0));
        }
        public void PlaceOrder_WhenProcessingPaymentNotSuccess_ShouldReturnNullAndAddModelError()
        {
            var cartTotal = new Money(1, Currency.USD);

            _orderGroupCalculatorMock.Setup(x => x.GetTotal(It.IsAny <IOrderGroup>())).Returns(() => cartTotal);

            _orderRepositoryMock.Setup(x => x.Load <IPurchaseOrder>(It.IsAny <int>())).Returns(new Mock <IPurchaseOrder>().Object);

            _orderRepositoryMock.Setup(x => x.SaveAsPurchaseOrder(It.IsAny <ICart>()))
            .Returns(() => new OrderReference(0, "", Guid.Empty, null));

            var cart = new FakeCart(new MarketImpl(MarketId.Empty), Currency.SEK)
            {
                OrderLink = new OrderReference(1, "", Guid.Empty, null)
            };

            cart.GetFirstForm().Payments.Add(new FakePayment {
                Status = PaymentStatus.Processed.ToString(), Amount = cartTotal.Amount
            });

            var modelState = new ModelStateDictionary();

            var viewModel = new CheckoutViewModel
            {
                BillingAddress = new AddressModel {
                    AddressId = "billingAddress"
                },
                Payment = new Mock <FakePaymentMethod>("PaymentMethod").Object
            };

            _paymentProcessorMock.Setup(x => x.ProcessPayment(It.IsAny <IOrderGroup>(), It.IsAny <IPayment>(), It.IsAny <IShipment>()))
            .Returns((IOrderGroup orderGroup, IPayment payment, IShipment shipment) => PaymentProcessingResult.CreateUnsuccessfulResult("Payment was failed."));

            string redirectUrl;
            var    result = _subject.PlaceOrder(cart, modelState, out redirectUrl);

            Assert.Null(result);
            Assert.Equal(1, modelState.Count(x => x.Value.Errors.Count > 0));
        }
Exemplo n.º 5
0
        public ApiResponse(HttpStatusCode statusCode, string type = null, string errorMessage        = null, Exception exc = null,
                           ModelStateDictionary modelState        = null, ApiResponseModel <T> model = default(ApiResponseModel <T>))
        {
            //
            this._errors     = new List <Error>();
            this._warnings   = new List <Warning>();
            this._model      = model;
            this._statusCode = statusCode;

            if (model != null)
            {
                this._data = this._model.data;
                this._model.data.pagination.recordPerPage = (Convert.ToInt32(this._model.data.pagination.totalCount) > 0) ? AppSettings.GetByKey("PageSize") : "0";
            }

            if (HttpContext.Current.Items["warningmessage"] != null)
            {
                this._warnings.Add(new Warning()
                {
                    type = type, message = new List <string>()
                    {
                        HttpContext.Current.Items["warningmessage"].ToString()
                    }
                });
            }


            #region Incase of Error and Unauthorization

            if (!string.IsNullOrEmpty(errorMessage))
            {
                this._errors.Add(new Error()
                {
                    type = type, message = new List <string>()
                    {
                        errorMessage
                    }
                });
            }

            #endregion

            #region Incase of Exception

            if (exc != null)
            {
                string innerException = exc.InnerException != null ? exc.InnerException.Message : string.Empty;
                this._errors.Add(new Error()
                {
                    type    = type,
                    message = new List <string>()
                    {
                        string.Format("Message : {0}", exc.Message),
                        string.Format("Source: {0}", exc.Source),
                        string.Format("InnerException: {0}", innerException)
                    }
                });
            }

            #endregion

            #region Incase of ModelState InValid for Validation

            if (modelState != null)
            {
                if (modelState.Count() > 0)
                {
                    foreach (var keyValue in modelState)
                    {
                        this._errors.Add(new Error()
                        {
                            type = type, message = new List <string>()
                            {
                                string.Format("{0}", keyValue.Value.Errors.FirstOrDefault().ErrorMessage),                                                                   /* string.Format("{0}", keyValue.Value.Errors.FirstOrDefault().Exception)*/
                            }
                        });
                    }
                }
            }

            #endregion

            #region Incase of Success
            //there is no need to do anything, all set already for success
            #endregion
        }