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); }
/// <summary> /// コンストラクタ /// </summary> public ShoppingCartPage() { InitializeComponent(); // ナビゲーションバーを非表示 NavigationPage.SetHasNavigationBar(this, false); // BindingContext = viewModel = new ShoppingCartPageViewModel(); }
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); }
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); }
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()); }
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(); }