Example #1
0
        public void Checkout_WhenAnonymous_ShowsSignInFlyout()
        {
            var modalCalled    = false;
            var accountService = new MockAccountService
            {
                VerifyUserAuthenticationAsyncDelegate = () => Task.FromResult <UserInfo>(null)
            };
            var signInUserControlViewModel = new MockSignInUserControlViewModel
            {
                OpenDelegate = (s) =>
                {
                    modalCalled = true;
                    Assert.IsNotNull(s);
                }
            };
            var checkoutDataRepository = new MockCheckoutDataRepository()
            {
                GetDefaultShippingAddressAsyncDelegate = () => null,
                GetDefaultBillingAddressAsyncDelegate  = () => null,
                GetDefaultPaymentMethodAsyncDelegate   = () => Task.FromResult <PaymentMethod>(null)
            };
            var eventAggregator = new MockEventAggregator
            {
                GetEventDelegate = type => new MockShoppingCartUpdatedEvent()
            };
            var target = new ShoppingCartPageViewModel(null, new MockNavigationService(), accountService, signInUserControlViewModel, null, null, checkoutDataRepository, null, eventAggregator);

            target.CheckoutCommand.Execute();

            Assert.IsTrue(modalCalled);
        }
Example #2
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public ShoppingCartPage()
        {
            InitializeComponent();

            // ナビゲーションバーを非表示
            NavigationPage.SetHasNavigationBar(this, false);

            //
            BindingContext = viewModel = new ShoppingCartPageViewModel();
        }
Example #3
0
        public void ShoppingCartUpdated_WhenShoppingCartChanged()
        {
            var navigationService      = new MockNavigationService();
            var accountService         = new MockAccountService();
            var shoppingCartRepository = new MockShoppingCartRepository();

            shoppingCartRepository.GetShoppingCartAsyncDelegate = () =>
            {
                ShoppingCart shoppingCart = new ShoppingCart(new ObservableCollection <ShoppingCartItem>())
                {
                    Currency = "USD"
                };
                return(Task.FromResult(shoppingCart));
            };
            bool signInUserControlOnNavigatedToCalled = false;
            var  signInUserControlViewModel           = new MockSignInUserControlViewModel()
            {
                OnNavigatedToDelegate = (a, b, c) => signInUserControlOnNavigatedToCalled = true
            };
            var eventAggregator          = new MockEventAggregator();
            var shoppingCartUpdatedEvent = new ShoppingCartUpdatedEvent();

            eventAggregator.GetEventDelegate = type => shoppingCartUpdatedEvent;
            var target = new ShoppingCartPageViewModel(shoppingCartRepository, navigationService, accountService, signInUserControlViewModel, null, null, null, null, eventAggregator);

            target.OnNavigatedTo(new NavigatedToEventArgs {
                Parameter = null, NavigationMode = NavigationMode.New
            }, null);

            Assert.AreEqual("$0.00", target.FullPrice);

            shoppingCartRepository.GetShoppingCartAsyncDelegate = () =>
            {
                var shoppingCartItems = new ObservableCollection <ShoppingCartItem>
                {
                    new ShoppingCartItem()
                    {
                        Product = new Product {
                            ListPrice = 100, ProductNumber = "p1", ImageUri = new Uri("http://image")
                        }, Currency = "USD", Quantity = 2
                    },
                };
                ShoppingCart shoppingCart = new ShoppingCart(new ObservableCollection <ShoppingCartItem>(shoppingCartItems))
                {
                    Currency = "USD"
                };
                return(Task.FromResult(shoppingCart));
            };

            shoppingCartUpdatedEvent.Publish(null);

            Assert.IsTrue(signInUserControlOnNavigatedToCalled);
            Assert.AreEqual("$200.00", target.FullPrice);
        }
Example #4
0
        public void OnNavigatedTo_Fill_Properties_With_Shopping_Cart_Items()
        {
            var navigationService      = new MockNavigationService();
            var shoppingCartRepository = new MockShoppingCartRepository();

            shoppingCartRepository.GetShoppingCartAsyncDelegate = () =>
            {
                ShoppingCart shoppingCart      = null;
                var          shoppingCartItems = new ObservableCollection <ShoppingCartItem>
                {
                    new ShoppingCartItem()
                    {
                        Product = new Product {
                            ListPrice = 100, DiscountPercentage = 50, ProductNumber = "p1", ImageUri = new Uri("http://image")
                        }, Currency = "USD", Quantity = 1
                    },
                    new ShoppingCartItem()
                    {
                        Product = new Product {
                            ListPrice = 100, DiscountPercentage = 50, ProductNumber = "p2", ImageUri = new Uri("http://image")
                        }, Currency = "USD", Quantity = 1
                    }
                };
                shoppingCart = new ShoppingCart(shoppingCartItems)
                {
                    Currency = "USD"
                };

                return(Task.FromResult(shoppingCart));
            };

            bool signInUserControlOnNavigatedToCalled = false;
            var  signInUserControlViewModel           = new MockSignInUserControlViewModel()
            {
                OnNavigatedToDelegate = (a, b, c) => signInUserControlOnNavigatedToCalled = true
            };

            var eventAggregator = new MockEventAggregator();

            eventAggregator.GetEventDelegate = type => new MockShoppingCartUpdatedEvent();
            var target = new ShoppingCartPageViewModel(shoppingCartRepository, navigationService, new MockAccountService(), signInUserControlViewModel, null, null, null, null, eventAggregator);

            target.OnNavigatedTo(new NavigatedToEventArgs {
                Parameter = null, NavigationMode = NavigationMode.New
            }, null);

            Assert.IsTrue(signInUserControlOnNavigatedToCalled);
            Assert.AreEqual("$200.00", target.FullPrice);
            Assert.AreEqual("$100.00", target.TotalDiscount);
            Assert.AreEqual(2, target.ShoppingCartItemViewModels.Count);
        }
        public void OnNavigatedTo_Fill_Properties_No_Shopping_Cart_Items()
        {
            var navigationService      = new MockNavigationService();
            var shoppingCartRepository = new MockShoppingCartRepository();

            shoppingCartRepository.GetShoppingCartAsyncDelegate = () =>
            {
                var shoppingCartItems = new List <ShoppingCartItem>();
                shoppingCartItems.Add(new ShoppingCartItem {
                    Quantity = 1, Product = new Product {
                        ListPrice = 200, DiscountPercentage = 50
                    }, Currency = "USD"
                });
                ShoppingCart shoppingCart = new ShoppingCart(new ObservableCollection <ShoppingCartItem>(shoppingCartItems))
                {
                    Currency = "USD"
                };
                return(Task.FromResult(shoppingCart));
            };

            bool signInUserControlOnNavigatedToCalled = false;
            var  signInUserControlViewModel           = new MockSignInUserControlViewModel()
            {
                OnNavigatedToDelegate = (a, b, c) => signInUserControlOnNavigatedToCalled = true
            };

            var eventAggregator = new MockEventAggregator();

            eventAggregator.GetEventDelegate = type => new MockShoppingCartUpdatedEvent();

            var target = new ShoppingCartPageViewModel(shoppingCartRepository, navigationService, new MockAccountService(), signInUserControlViewModel, null, null, null, null, eventAggregator);

            target.OnNavigatedTo(null, NavigationMode.New, null);

            Assert.IsTrue(signInUserControlOnNavigatedToCalled);
            Assert.AreEqual("$200.00", target.FullPrice);
            Assert.AreEqual("$100.00", target.TotalDiscount);
            Assert.AreEqual(1, target.ShoppingCartItemViewModels.Count);
        }
        public void UpdateShoppingCart_ClearsFields_WhenShoppingCartEmpty()
        {
            var shoppingCartRepository = new MockShoppingCartRepository();

            shoppingCartRepository.GetShoppingCartAsyncDelegate = () => Task.FromResult <ShoppingCart>(null);
            var  eventAggregator = new MockEventAggregator();
            bool signInUserControlOnNavigatedToCalled = false;
            var  signInUserControlViewModel           = new MockSignInUserControlViewModel()
            {
                OnNavigatedToDelegate = (a, b, c) => Task.Delay(0)
            };

            eventAggregator.GetEventDelegate = type => new MockShoppingCartUpdatedEvent();
            var target = new ShoppingCartPageViewModel(shoppingCartRepository, new MockNavigationService(),
                                                       new MockAccountService(), signInUserControlViewModel, null, null, null, null, eventAggregator);

            target.OnNavigatedTo(null, NavigationMode.New, null);

            Assert.AreEqual(string.Empty, target.TotalPrice);
            Assert.AreEqual(string.Empty, target.TotalDiscount);
            Assert.AreEqual(string.Empty, target.FullPrice);
        }
Example #7
0
        public void DecrementCountCommand_NotExecutable()
        {
            var navigationService      = new MockNavigationService();
            var shoppingCartRepository = new MockShoppingCartRepository();
            var eventAggregator        = new MockEventAggregator();

            eventAggregator.GetEventDelegate = type => new MockShoppingCartUpdatedEvent();
            var target = new ShoppingCartPageViewModel(shoppingCartRepository, navigationService, null, null, null, null, null, null, eventAggregator);

            target.SelectedItem = new ShoppingCartItemViewModel(new ShoppingCartItem()
            {
                Quantity = 2, Currency = "USD", Product = new Product()
            }, null);

            Assert.IsTrue(target.DecrementCountCommand.CanExecute());

            target.SelectedItem = new ShoppingCartItemViewModel(new ShoppingCartItem()
            {
                Quantity = 1, Currency = "USD", Product = new Product()
            }, null);

            Assert.IsFalse(target.DecrementCountCommand.CanExecute());
        }
Example #8
0
        public void CheckoutCommand_NotExecutable_IfNoItemsInCart()
        {
            var navigationService      = new MockNavigationService();
            var shoppingCartRepository = new MockShoppingCartRepository();

            shoppingCartRepository.GetShoppingCartAsyncDelegate = () => Task.FromResult <ShoppingCart>(null);
            var eventAggregator = new MockEventAggregator();

            eventAggregator.GetEventDelegate = type => new MockShoppingCartUpdatedEvent();
            var target = new ShoppingCartPageViewModel(shoppingCartRepository, navigationService, null, null, null, null, null, null, eventAggregator);

            target.UpdateShoppingCartAsync(null);

            Assert.IsFalse(target.CheckoutCommand.CanExecute());

            shoppingCartRepository.GetShoppingCartAsyncDelegate =
                () => Task.FromResult(new ShoppingCart(new Collection <ShoppingCartItem>())
            {
                Currency = "USD", FullPrice = 0, TaxRate = 0, TotalDiscount = 0, TotalPrice = 0
            });
            target.UpdateShoppingCartAsync(null);

            Assert.IsFalse(target.CheckoutCommand.CanExecute());

            shoppingCartRepository.GetShoppingCartAsyncDelegate =
                () => Task.FromResult(new ShoppingCart(new Collection <ShoppingCartItem> {
                new ShoppingCartItem {
                    Product = new Product(), Currency = "USD", Quantity = 0
                }
            })
            {
                Currency = "USD", FullPrice = 0, TaxRate = 0, TotalDiscount = 0, TotalPrice = 0
            });
            target.UpdateShoppingCartAsync(null);

            Assert.IsTrue(target.CheckoutCommand.CanExecute());
        }
		public ShoppingCartPage()
		{
			this.InitializeComponent();
			DataContext = new ShoppingCartPageViewModel();
		}