コード例 #1
0
        public void GetPaymentMethods_WhenSetDefaultPaymentMethodToOtherPaymentMethod_ShouldReturnDefaultPaymentMethodCorrectly()
        {
            _paymentServiceMock.Setup(x => x.GetPaymentMethodsByMarketIdAndLanguageCode(It.IsAny <string>(), "en")).Returns(
                new[]
            {
                new PaymentMethodViewModel {
                    PaymentMethodId = Guid.NewGuid(), Description = "Lorem ipsum", FriendlyName = "name 1", SystemKeyword = "CashOnDelivery"
                },
                new PaymentMethodViewModel {
                    PaymentMethodId = Guid.NewGuid(), Description = "Lorem ipsum", FriendlyName = "name 2", SystemKeyword = "GenericCreditCard", IsDefault = true
                },
                new PaymentMethodViewModel {
                    PaymentMethodId = Guid.NewGuid(), Description = "Lorem ipsum", FriendlyName = "name 3", SystemKeyword = "system3"
                }
            });

            var cashOnDeliveryPaymentOption = new CashOnDeliveryPaymentOption(null, null, _currentMarketMock.Object, _languageServiceMock.Object, _paymentServiceMock.Object);
            var creaditPaymentOption        = new GenericCreditCardPaymentOption(null, null, _currentMarketMock.Object, _languageServiceMock.Object, _paymentServiceMock.Object);

            _paymentOptions = new List <IPaymentOption>();
            _paymentOptions.Add(cashOnDeliveryPaymentOption as IPaymentOption);
            _paymentOptions.Add(creaditPaymentOption as IPaymentOption);

            _subject = new PaymentMethodViewModelFactory(_currentMarketMock.Object, _languageServiceMock.Object, _paymentServiceMock.Object, _paymentOptions);

            var result   = _subject.GetPaymentMethodViewModels().FirstOrDefault(p => p.SystemKeyword == "GenericCreditCard").IsDefault;
            var expected = true;

            Assert.Equal(expected, result);
        }
コード例 #2
0
        public PaymentMethodViewModelFactoryTests()
        {
            _paymentServiceMock = new Mock <IPaymentService>();
            _paymentServiceMock.Setup(x => x.GetPaymentMethodsByMarketIdAndLanguageCode(It.IsAny <string>(), "en")).Returns(
                new[]
            {
                new PaymentMethodViewModel {
                    PaymentMethodId = Guid.NewGuid(), Description = "Lorem ipsum", FriendlyName = "name 1", SystemKeyword = "CashOnDelivery", IsDefault = true
                },
                new PaymentMethodViewModel {
                    PaymentMethodId = Guid.NewGuid(), Description = "Lorem ipsum", FriendlyName = "name 2", SystemKeyword = "GenericCreditCard"
                },
                new PaymentMethodViewModel {
                    PaymentMethodId = Guid.NewGuid(), Description = "Lorem ipsum", FriendlyName = "name 3", SystemKeyword = "system3"
                }
            });

            _marketMock = new Mock <IMarket>();
            _marketMock.Setup(m => m.MarketId).Returns(new MarketId("sampleMarket"));

            _currentMarketMock = new Mock <ICurrentMarket>();
            _currentMarketMock.Setup(x => x.GetCurrentMarket()).Returns(_marketMock.Object);

            _languageServiceMock = new Mock <LanguageService>(null, null, null);
            _languageServiceMock.Setup(x => x.GetCurrentLanguage()).Returns(new CultureInfo("en-US"));

            var cashOnDeliveryPaymentOption = new CashOnDeliveryPaymentOption(null, null, _currentMarketMock.Object, _languageServiceMock.Object, _paymentServiceMock.Object);
            var creaditPaymentOption        = new GenericCreditCardPaymentOption(null, null, _currentMarketMock.Object, _languageServiceMock.Object, _paymentServiceMock.Object);

            _paymentOptions = new List <IPaymentOption>();
            _paymentOptions.Add(cashOnDeliveryPaymentOption as IPaymentOption);
            _paymentOptions.Add(creaditPaymentOption as IPaymentOption);

            _subject = new PaymentMethodViewModelFactory(_currentMarketMock.Object, _languageServiceMock.Object, _paymentServiceMock.Object, _paymentOptions);
        }
        public PaymentMethodViewModelFactoryTests()
        {
            _paymentServiceMock  = new Mock <IPaymentService>();
            _marketMock          = new Mock <IMarket>();
            _currentMarketMock   = new Mock <ICurrentMarket>();
            _languageServiceMock = new Mock <LanguageService>(null, null, null, null);

            _currentMarketMock.Setup(x => x.GetCurrentMarket()).Returns(_marketMock.Object);
            _languageServiceMock.Setup(x => x.GetCurrentLanguage()).Returns(new CultureInfo("en-US"));
            _paymentServiceMock.Setup(x => x.GetPaymentMethodsByMarketIdAndLanguageCode(It.IsAny <string>(), "en")).Returns(
                new[]
            {
                new PaymentMethodModel {
                    Description = "Lorem ipsum", FriendlyName = "name 1", LanguageId = "en", PaymentMethodId = Guid.NewGuid(), SystemName = "system 1"
                },
                new PaymentMethodModel {
                    Description = "Lorem ipsum", FriendlyName = "name 2", LanguageId = "en", PaymentMethodId = Guid.NewGuid(), SystemName = "system 2"
                },
                new PaymentMethodModel {
                    Description = "Lorem ipsum", FriendlyName = "name 3", LanguageId = "en", PaymentMethodId = Guid.NewGuid(), SystemName = "system 3"
                }
            });

            _subject = new PaymentMethodViewModelFactory(_currentMarketMock.Object, _languageServiceMock.Object, _paymentServiceMock.Object);
        }
コード例 #4
0
        public static void LoadDefault(OrderFilter filter, PaymentMethodViewModelFactory paymentMethodViewModelFactory)
        {
            filter.PaymentMethods.AddRange(paymentMethodViewModelFactory.GetPaymentMethodViewModels()
                                           .Select(x => new KeyValuePair <string, string>(x.SystemKeyword, x.PaymentMethodId.ToString())));

            filter.OrderStatuses.AddRange(OrderStatus.RegisteredStatuses.Select(x => new KeyValuePair <string, int>(x.Name, x.Id)));
        }
コード例 #5
0
 public CheckoutViewModelFactory(
     LocalizationService localizationService,
     PaymentMethodViewModelFactory paymentMethodViewModelFactory,
     IAddressBookService addressBookService,
     IContentLoader contentLoader,
     IOrderGroupFactory orderGroupFactory,
     UrlResolver urlResolver,
     ServiceAccessor <HttpContextBase> httpContextAccessor,
     ShipmentViewModelFactory shipmentViewModelFactory,
     ICustomerService customerService,
     IOrganizationService organizationService,
     IBudgetService budgetService,
     CustomerContextFacade customerContext)
 {
     _localizationService           = localizationService;
     _paymentMethodViewModelFactory = paymentMethodViewModelFactory;
     _addressBookService            = addressBookService;
     _contentLoader            = contentLoader;
     _orderGroupFactory        = orderGroupFactory;
     _urlResolver              = urlResolver;
     _httpContextAccessor      = httpContextAccessor;
     _shipmentViewModelFactory = shipmentViewModelFactory;
     _customerService          = customerService;
     _budgetService            = budgetService;
     _organizationService      = organizationService;
     _customerContext          = customerContext;
 }
コード例 #6
0
        public PaymentMethodViewModelFactoryTests()
        {
            _paymentMethods = new[]
            {
                new PaymentMethodViewModel <IPaymentMethod> {
                    IsDefault = false, PaymentMethod = new FakePaymentMethod("FirstOption")
                },
                new PaymentMethodViewModel <IPaymentMethod> {
                    IsDefault = true, PaymentMethod = new FakePaymentMethod("SecondOption")
                },
                new PaymentMethodViewModel <IPaymentMethod> {
                    IsDefault = false, PaymentMethod = new FakePaymentMethod("ThirdOption")
                }
            };

            _paymentManagerMock = new Mock <IPaymentManagerFacade>();
            _paymentManagerMock.Setup(x => x.GetPaymentMethodsByMarket(It.IsAny <string>()))
            .Returns(() =>
            {
                var dto                = new Mediachase.Commerce.Orders.Dto.PaymentMethodDto();
                var ordering           = 0;
                dto.EnforceConstraints = false;

                foreach (var method in _paymentMethods)
                {
                    var row             = dto.PaymentMethod.NewPaymentMethodRow();
                    row.SystemKeyword   = method.PaymentMethod.SystemKeyword;
                    row.PaymentMethodId = method.PaymentMethod.PaymentMethodId;
                    row.Name            = method.PaymentMethod.Name;
                    row.LanguageId      = "en";
                    row.IsActive        = true;
                    row.IsDefault       = method.IsDefault;
                    row.Ordering        = ++ordering;
                    dto.PaymentMethod.AddPaymentMethodRow(row);
                }

                return(dto);
            });


            _marketMock = new Mock <IMarket>();
            _marketMock.Setup(m => m.MarketId).Returns(new MarketId("sampleMarket"));

            _currentMarketMock = new Mock <ICurrentMarket>();
            _currentMarketMock.Setup(x => x.GetCurrentMarket()).Returns(_marketMock.Object);

            _languageServiceMock = new Mock <LanguageService>(null, null, null);
            _languageServiceMock.Setup(x => x.GetCurrentLanguage()).Returns(new CultureInfo("en-US"));

            var contentLoaderMock = new Mock <IContentLoader>();

            _subject = new PaymentMethodViewModelFactory(
                _currentMarketMock.Object, _languageServiceMock.Object, _paymentMethods.Select(x => x.PaymentMethod), _paymentManagerMock.Object, contentLoaderMock.Object);
        }
コード例 #7
0
 public OrderSearchBlockController(IAddressBookService addressBookService,
                                   ICustomerService customerService,
                                   IOrderGroupCalculator orderGroupCalculator,
                                   IContentLoader contentLoader,
                                   PaymentMethodViewModelFactory paymentMethodViewModelFactory,
                                   CookieService cookieService)
 {
     _addressBookService            = addressBookService;
     _customerService               = customerService;
     _orderGroupCalculator          = orderGroupCalculator;
     _contentLoader                 = contentLoader;
     _paymentMethodViewModelFactory = paymentMethodViewModelFactory;
     _cookieService                 = cookieService;
 }
コード例 #8
0
 public CheckoutViewModelFactory(
     LocalizationService localizationService,
     PaymentMethodViewModelFactory paymentMethodViewModelFactory,
     IAddressBookService addressBookService,
     IContentLoader contentLoader,
     UrlResolver urlResolver,
     ServiceAccessor <HttpContextBase> httpContextAccessor,
     ShipmentViewModelFactory shipmentViewModelFactory)
 {
     _localizationService           = localizationService;
     _paymentMethodViewModelFactory = paymentMethodViewModelFactory;
     _addressBookService            = addressBookService;
     _contentLoader            = contentLoader;
     _urlResolver              = urlResolver;
     _httpContextAccessor      = httpContextAccessor;
     _shipmentViewModelFactory = shipmentViewModelFactory;
 }
コード例 #9
0
        public ActionResult Purchase(CheckoutPage currentPage, CheckoutViewModel checkoutViewModel, string selectPayment)
        {
            var _cartService    = new CartService();
            var checkoutService = new CheckoutService();
            var paymentMethods  = checkoutService.GetPaymentMethods();
            var paymentMethod   = paymentMethods.Where(x => x.Id == new Guid(selectPayment)).SingleOrDefault(); //PaymentMethodViewModelFactory.Resolve(selectPayment);
            var choosePayment   = PaymentMethodViewModelFactory.Resolve(paymentMethod);

            checkoutService.ClearOrderAddresses();


            _cartService.RunWorkflow(OrderGroupWorkflowManager.CartPrepareWorkflowName);
            _cartService.SaveCart();
            //star payment
            var _paymentService = new PaymentService();

            try
            {
                _paymentService.ProcessPayment(choosePayment.PaymentMethod);
            }
            catch (PreProcessException)
            {
                ModelState.AddModelError("PaymentMethod", "Payment Preprocess fail");
            }
            //add order form
            PurchaseOrder purchaseOrder = null;

            _cartService = new CartService();
            OrderForm orderForm            = _cartService.GetOrderForms().First();
            decimal   totalProcessedAmount = orderForm.Payments.Where(x => x.Status.Equals(PaymentStatus.Processed.ToString())).Sum(x => x.Amount);

            if (totalProcessedAmount != orderForm.Total)
            {
                throw new InvalidOperationException("Wrong amount");
            }
            _cartService.RunWorkflow(OrderGroupWorkflowManager.CartCheckOutWorkflowName);
            purchaseOrder = checkoutService.SaveCartAsPurchaseOrder();
            checkoutService.DeleteCart();

            IContentRepository _contentRepository = ServiceLocator.Current.GetInstance <IContentRepository>();
            var startpage    = _contentRepository.Get <StartPage>(ContentReference.StartPage);
            var thankyouPage = _contentRepository.GetChildren <ThankYouPage>(startpage.ContentLink).FirstOrDefault();

            return(Redirect(new UrlBuilder(thankyouPage.LinkURL).ToString()));
        }
コード例 #10
0
 public OrderHistoryController(IAddressBookService addressBookService,
                               IOrderRepository orderRepository,
                               ConfirmationService confirmationService,
                               ICartService cartService,
                               IOrderGroupCalculator orderGroupCalculator,
                               IContentLoader contentLoader,
                               UrlResolver urlResolver, IOrderGroupFactory orderGroupFactory, ICustomerService customerService,
                               PaymentMethodViewModelFactory paymentMethodViewModelFactory,
                               CookieService cookieService) :
     base(confirmationService, addressBookService, orderGroupCalculator, urlResolver, customerService)
 {
     _addressBookService            = addressBookService;
     _orderRepository               = orderRepository;
     _contentLoader                 = contentLoader;
     _cartService                   = cartService;
     _orderGroupFactory             = orderGroupFactory;
     _paymentMethodViewModelFactory = paymentMethodViewModelFactory;
     _cookieService                 = cookieService;
 }
コード例 #11
0
        public CheckoutViewModelFactoryTests()
        {
            _cart = new FakeCart(new MarketImpl(new MarketId(Currency.USD)), Currency.USD);
            _cart.Forms.Single().Shipments.Single().LineItems.Add(new InMemoryLineItem());
            _cart.Forms.Single().CouponCodes.Add("couponcode");

            var paymentServiceMock = new Mock <IPaymentService>();

            paymentServiceMock.Setup(x => x.GetPaymentMethodsByMarketIdAndLanguageCode(It.IsAny <string>(), "en")).Returns(
                new[]
            {
                new PaymentMethodViewModel()
                {
                    PaymentMethodId = Guid.NewGuid(), Description = "Lorem ipsum", FriendlyName = "payment method 1", SystemKeyword = cashPaymentName
                },
                new PaymentMethodViewModel()
                {
                    PaymentMethodId = Guid.NewGuid(), Description = "Lorem ipsum", FriendlyName = "payment method 2", SystemKeyword = creditPaymentName, IsDefault = true
                }
            });

            var marketMock          = new Mock <IMarket>();
            var currentMarketMock   = new Mock <ICurrentMarket>();
            var languageServiceMock = new Mock <LanguageService>(null, null, null);

            currentMarketMock.Setup(x => x.GetCurrentMarket()).Returns(marketMock.Object);
            languageServiceMock.Setup(x => x.GetCurrentLanguage()).Returns(new CultureInfo("en-US"));

            var cashOnDeliveryPaymentOption = new CashOnDeliveryPaymentOption(null, null, currentMarketMock.Object, languageServiceMock.Object, paymentServiceMock.Object);
            var creaditPaymentOption        = new GenericCreditCardPaymentOption(null, null, currentMarketMock.Object, languageServiceMock.Object, paymentServiceMock.Object);

            var paymentOptions = new List <IPaymentOption>();

            paymentOptions.Add(cashOnDeliveryPaymentOption as IPaymentOption);
            paymentOptions.Add(creaditPaymentOption as IPaymentOption);
            _creditPayment = creaditPaymentOption;

            var paymentMethodViewModelFactory = new PaymentMethodViewModelFactory(currentMarketMock.Object, languageServiceMock.Object, paymentServiceMock.Object, paymentOptions);

            var orderGroupFactoryMock = new Mock <IOrderGroupFactory>();

            orderGroupFactoryMock.Setup(x => x.CreatePayment(It.IsAny <IOrderGroup>())).Returns((IOrderGroup orderGroup) => new FakePayment());
            var serviceLocatorMock = new Mock <IServiceLocator>();

            serviceLocatorMock.Setup(x => x.GetInstance <IOrderGroupFactory>()).Returns(orderGroupFactoryMock.Object);
            ServiceLocator.SetLocator(serviceLocatorMock.Object);

            _addressBookServiceMock = new Mock <IAddressBookService>();
            _addressBookServiceMock.Setup(x => x.List()).Returns(() => new List <AddressModel> {
                new AddressModel {
                    AddressId = "addressid"
                }
            });
            _preferredBillingAddress      = CustomerAddress.CreateInstance();
            _preferredBillingAddress.Name = "preferredBillingAddress";
            _addressBookServiceMock.Setup(x => x.GetPreferredBillingAddress()).Returns(_preferredBillingAddress);
            _addressBookServiceMock.Setup(x => x.UseBillingAddressForShipment()).Returns(true);

            _startPage = new StartPage();
            var contentLoaderMock = new Mock <IContentLoader>();

            contentLoaderMock.Setup(x => x.Get <StartPage>(It.IsAny <PageReference>())).Returns(_startPage);

            var urlResolverMock = new Mock <UrlResolver>();
            var httpcontextMock = new Mock <HttpContextBase>();
            var requestMock     = new Mock <HttpRequestBase>();

            requestMock.Setup(x => x.Url).Returns(new Uri("http://site.com"));
            requestMock.Setup(x => x.UrlReferrer).Returns(new Uri("http://site.com"));
            httpcontextMock.Setup(x => x.Request).Returns(requestMock.Object);

            var shipmentViewModelFactoryMock = new Mock <ShipmentViewModelFactory>(null, null, null, null, null);

            shipmentViewModelFactoryMock.Setup(x => x.CreateShipmentsViewModel(It.IsAny <ICart>())).Returns(() => new[]
            {
                new ShipmentViewModel {
                    CartItems = new[]
                    {
                        new CartItemViewModel {
                            Quantity = 1
                        }
                    }
                }
            });

            _subject = new CheckoutViewModelFactory(
                new MemoryLocalizationService(),
                (() => paymentMethodViewModelFactory),
                _addressBookServiceMock.Object,
                contentLoaderMock.Object,
                urlResolverMock.Object,
                (() => httpcontextMock.Object),
                shipmentViewModelFactoryMock.Object);
        }
コード例 #12
0
        public CheckoutViewModelFactoryTests()
        {
            _cart = new FakeCart(new MarketImpl(new MarketId(Currency.USD)), Currency.USD);
            _cart.Forms.Single().Shipments.Single().LineItems.Add(new InMemoryLineItem());
            _cart.Forms.Single().CouponCodes.Add("couponcode");

            _cashPayment = new PaymentMethodViewModel <PaymentMethodBase> {
                SystemName = cashPaymentName
            };
            _creditPayment = new PaymentMethodViewModel <PaymentMethodBase> {
                SystemName = creditPaymentName
            };
            var paymentServiceMock            = new Mock <IPaymentService>();
            var marketMock                    = new Mock <IMarket>();
            var currentMarketMock             = new Mock <ICurrentMarket>();
            var languageServiceMock           = new Mock <LanguageService>(null, null, null, null);
            var paymentMethodViewModelFactory = new PaymentMethodViewModelFactory(currentMarketMock.Object, languageServiceMock.Object, paymentServiceMock.Object);

            currentMarketMock.Setup(x => x.GetCurrentMarket()).Returns(marketMock.Object);
            languageServiceMock.Setup(x => x.GetCurrentLanguage()).Returns(new CultureInfo("en-US"));
            paymentServiceMock.Setup(x => x.GetPaymentMethodsByMarketIdAndLanguageCode(It.IsAny <string>(), "en")).Returns(
                new[]
            {
                new PaymentMethodModel {
                    Description = "Lorem ipsum", FriendlyName = "payment method 1", LanguageId = "en", PaymentMethodId = Guid.NewGuid(), SystemName = cashPaymentName
                },
                new PaymentMethodModel {
                    Description = "Lorem ipsum", FriendlyName = "payment method 2", LanguageId = "en", PaymentMethodId = Guid.NewGuid(), SystemName = creditPaymentName
                }
            });

            var addressBookServiceMock = new Mock <IAddressBookService>();

            addressBookServiceMock.Setup(x => x.List()).Returns(() => new List <AddressModel> {
                new AddressModel {
                    AddressId = "addressid"
                }
            });
            _preferredBillingAddress      = CustomerAddress.CreateInstance();
            _preferredBillingAddress.Name = "preferredBillingAddress";
            addressBookServiceMock.Setup(x => x.GetPreferredBillingAddress()).Returns(_preferredBillingAddress);
            addressBookServiceMock.Setup(x => x.UseBillingAddressForShipment()).Returns(true);

            _startPage = new StartPage();
            var contentLoaderMock = new Mock <IContentLoader>();

            contentLoaderMock.Setup(x => x.Get <StartPage>(It.IsAny <PageReference>())).Returns(_startPage);

            var orderGroupFactoryMock = new Mock <IOrderGroupFactory>();
            var urlResolverMock       = new Mock <UrlResolver>();
            var httpcontextMock       = new Mock <HttpContextBase>();
            var requestMock           = new Mock <HttpRequestBase>();
            var serviceCustomer       = new Mock <ICustomerService>();
            var organizationService   = new Mock <IOrganizationService>();
            var budgetService         = new Mock <IBudgetService>();
            var customerContext       = new Mock <CustomerContextFacade>();

            requestMock.Setup(x => x.Url).Returns(new Uri("http://site.com"));
            requestMock.Setup(x => x.UrlReferrer).Returns(new Uri("http://site.com"));
            httpcontextMock.Setup(x => x.Request).Returns(requestMock.Object);

            PreferredCultureAccessor accessor = () => CultureInfo.InvariantCulture;
            var shipmentViewModelFactoryMock  = new Mock <ShipmentViewModelFactory>(null, null, null, null, null, null, accessor, null);

            shipmentViewModelFactoryMock.Setup(x => x.CreateShipmentsViewModel(It.IsAny <ICart>())).Returns(() => new[]
            {
                new ShipmentViewModel {
                    CartItems = new[]
                    {
                        new CartItemViewModel {
                            Quantity = 1
                        }
                    }
                }
            });

            _subject = new CheckoutViewModelFactory(
                new MemoryLocalizationService(),
                paymentMethodViewModelFactory,
                addressBookServiceMock.Object,
                contentLoaderMock.Object,
                orderGroupFactoryMock.Object,
                urlResolverMock.Object,
                (() => httpcontextMock.Object),
                shipmentViewModelFactoryMock.Object,
                serviceCustomer.Object,
                organizationService.Object,
                budgetService.Object,
                customerContext.Object);
        }
コード例 #13
0
 public PaymentController(PaymentMethodViewModelFactory paymentMethodViewModelFactory)
 {
     _paymentMethodViewModelFactory = paymentMethodViewModelFactory;
 }
コード例 #14
0
 public PaymentOptionViewModelBinder(PaymentMethodViewModelFactory paymentMethodViewModelFactory)
 {
     _paymentMethodViewModelFactory = paymentMethodViewModelFactory;
 }
 public PaymentOptionViewModelBinder(PaymentMethodViewModelFactory paymentMethodViewModelFactory,
                                     IModelMetadataProvider modelMetadataProvider)
 {
     _paymentMethodViewModelFactory = paymentMethodViewModelFactory;
     _modelMetadataProvider         = modelMetadataProvider;
 }