示例#1
0
 public void AugmentViewModel(ActivePaymentViewModel viewModel, Payment payment)
 {
 }
 /// <summary>
 /// Augments the ViewModel with useful data.
 /// </summary>
 /// <param name="viewModel">The ViewModel to augment.</param>
 /// <param name="payment">The payment.</param>
 public virtual void AugmentViewModel(ActivePaymentViewModel viewModel, Overture.ServiceModel.Orders.Payment payment)
 {
 }
示例#3
0
        protected virtual async Task <CheckoutPaymentViewModel> MapCheckoutPaymentViewModel(Overture.ServiceModel.Orders.Cart cart, List <IPaymentMethodViewModel> paymentMethodViewModels, CultureInfo cultureInfo, bool isAuthenticated)
        {
            var payment = GetActivePayment(cart);

            if (payment == null)
            {
                return(null);
            }

            var paymentId = payment.Id;

            ActivePaymentViewModel activePaymentVm = null;

            if (payment.PaymentMethod != null)
            {
                var provider = PaymentProviderFactory.ResolveProvider(payment.PaymentMethod.PaymentProviderName);

                activePaymentVm = GetActivePaymentViewModel(new GetActivePaymentViewModelParam
                {
                    Cart            = cart,
                    CultureInfo     = cultureInfo,
                    PaymentProvider = provider,
                    IsAuthenticated = isAuthenticated
                });

                var activePaymentMethodVm =
                    paymentMethodViewModels.FirstOrDefault(
                        pm =>
                        pm.Id == payment.PaymentMethod.Id &&
                        pm.PaymentProviderName == payment.PaymentMethod.PaymentProviderName &&
                        pm.IsValid);

                if (activePaymentMethodVm != null)
                {
                    activePaymentMethodVm.IsSelected = true;
                }

                // If active payment is set to soemthing that doesn't exists anymore
                // Select the first payment method available...
                if (activePaymentVm != null && activePaymentMethodVm == null)
                {
                    activePaymentVm = await UpdateActivePaymentMethodAsync(new UpdatePaymentMethodParam
                    {
                        CartName            = cart.Name,
                        CultureInfo         = cultureInfo,
                        CustomerId          = cart.CustomerId,
                        IsAuthenticated     = isAuthenticated,
                        Scope               = cart.ScopeId,
                        PaymentId           = activePaymentVm.Id,
                        PaymentMethodId     = paymentMethodViewModels.First().Id,
                        PaymentProviderName = paymentMethodViewModels.First().PaymentProviderName,
                    }).ConfigureAwait(false);

                    paymentId = activePaymentVm.Id;

                    paymentMethodViewModels.First().IsSelected = true;
                }
            }

            var vm = new CheckoutPaymentViewModel
            {
                PaymentId              = paymentId,
                PaymentMethods         = paymentMethodViewModels,
                ActivePaymentViewModel = activePaymentVm
            };

            return(vm);
        }
        public void SetUp()
        {
            _container = new AutoMocker();

            var repoMock = _container.GetMock <IPaymentRepository>();

            repoMock.Setup(repo => repo.UpdatePaymentMethodAsync(It.IsNotNull <UpdatePaymentMethodParam>()))
            .Returns((UpdatePaymentMethodParam p) =>
            {
                var cart = new ProcessedCart
                {
                    Name        = p.CartName,
                    CultureName = p.CultureInfo.Name,
                    ScopeId     = p.Scope,
                    CustomerId  = p.CustomerId,
                    Payments    = new List <Payment>
                    {
                        new Payment
                        {
                            Id            = p.PaymentId,
                            PaymentMethod = new PaymentMethod
                            {
                                Id = p.PaymentMethodId,
                                PaymentProviderName = p.PaymentProviderName,
                                Type        = GetRandom.Enumeration <PaymentMethodType>(),
                                DisplayName = new LocalizedString
                                {
                                    { p.CultureInfo.Name, GetRandom.String(12) }
                                },
                                Enabled = true,
                                Default = GetRandom.Boolean(),
                            },
                            PaymentStatus = PaymentStatus.New
                        }
                    }
                };

                return(Task.FromResult(cart));
            }).Verifiable("The repository was not called to Update the payment method.");

            repoMock.Setup(repo => repo.InitializePaymentAsync(It.IsNotNull <InitializePaymentParam>()))
            .Returns((InitializePaymentParam p) =>
            {
                var cart = new Overture.ServiceModel.Orders.Cart
                {
                    Name        = p.CartName,
                    CultureName = p.CultureInfo.Name,
                    ScopeId     = p.Scope,
                    CustomerId  = p.CustomerId,
                    Payments    = new List <Payment>
                    {
                        new Payment
                        {
                            Id            = p.PaymentId,
                            PaymentMethod = new PaymentMethod
                            {
                                Id = p.PaymentId,
                                PaymentProviderName = GetRandom.String(12),
                                Type        = GetRandom.Enumeration <PaymentMethodType>(),
                                DisplayName = new LocalizedString
                                {
                                    { p.CultureInfo.Name, GetRandom.String(12) }
                                },
                                Enabled     = true,
                                Default     = GetRandom.Boolean(),
                                PropertyBag = new PropertyBag
                                {
                                    //TODO: Change this to reflect real return from OV.
                                    { "HostedCardTokenizationUrl", string.Format("https://{0}/?id={1}&css={2}", GetRandom.WwwUrl(), GetRandom.String(16), GetRandom.String(255)) }
                                }
                            },
                            PaymentStatus = PaymentStatus.New
                        }
                    }
                };

                return(Task.FromResult(cart));
            }).Verifiable("The repository was not called to initialize the Payment.");

            var vmMapperMock = _container.GetMock <IViewModelMapper>();

            vmMapperMock.Setup(
                vmm => vmm.MapTo <ActivePaymentViewModel>(It.IsNotNull <Payment>(), It.IsNotNull <CultureInfo>()))
            .Returns((Payment p, CultureInfo ci) =>
            {
                var vm = new ActivePaymentViewModel
                {
                    Id            = p.Id,
                    PaymentStatus = p.PaymentStatus
                };

                return(vm);
            }).Verifiable("The ViewModelMapper has not been called to create an ActivePaymentViewModel.");
        }