public void OnNavigatedTo_When_Service_Not_Available_Then_Pops_Alert() { var repository = new MockProductCatalogRepository(); var navigationService = new MockNavigationService(); var alertService = new MockAlertMessageService(); var resourceLoader = new MockResourceLoader(); bool alertCalled = false; repository.GetProductAsyncDelegate = (productNumber) => { throw new HttpRequestException(); }; repository.GetProductsAsyncDelegate = (subCategoryId) => { throw new HttpRequestException(); }; alertService.ShowAsyncDelegate = (msg, title) => { alertCalled = true; return Task.FromResult(string.Empty); }; var target = new ItemDetailPageViewModel(repository, navigationService, new MockShoppingCartRepository(), alertService, resourceLoader, null, new MockSearchPaneService()); target.OnNavigatedTo("1", NavigationMode.New, null); Assert.IsTrue(alertCalled); }
public void OnNavigatingTo_Search_Results_Page_Without_Search_Term() { var repository = new MockProductCatalogRepository(); var navigationService = new MockNavigationService(); repository.GetFilteredProductsAsyncDelegate = (queryString) => { ReadOnlyCollection<Category> categories; if (queryString == "bike") categories = new ReadOnlyCollection<Category>(new List<Category> { new Category() {Products = new List<Product>() {new Product(){Title = "Bike1", ProductNumber = "1", ImageUri = new Uri("http://image")}}}, new Category() {Products = new List<Product>() {new Product(){Title = "Bike2", ProductNumber = "2", ImageUri = new Uri("http://image")}}}, }); else { categories = new ReadOnlyCollection<Category>(new List<Category> { new Category() {Products = new List<Product>() {new Product(){Title = "Bike1", ProductNumber = "1", ImageUri = new Uri("http://image")}}}, new Category() {Products = new List<Product>() {new Product(){Title = "Bike2", ProductNumber = "2", ImageUri = new Uri("http://image")}}}, new Category() {Products = new List<Product>() {new Product(){Title = "Product3", ProductNumber = "3", ImageUri = new Uri("http://image")}}} }); } return Task.FromResult(categories); }; var target = new SearchResultsPageViewModel(repository, navigationService, new MockSearchPaneService()); var searchTerm = string.Empty; target.OnNavigatedTo(searchTerm, NavigationMode.New, null); Assert.AreEqual(string.Empty, target.SearchTerm); Assert.IsNotNull(target.Results); Assert.AreEqual(3, target.Results.Count); }
public void ProductNav_With_Null_Parameter_Does_Not_Navigate() { var repository = new MockProductCatalogRepository(); var navigationService = new MockNavigationService(); navigationService.NavigateDelegate = (pageName, categoryId) => { Assert.Fail(); return false; }; var viewModel = new HubPageViewModel(repository, navigationService, null, null, null); viewModel.ProductNavigationAction.Invoke(null); }
public void OnNavigatedTo_Fill_Items_And_Title() { var repository = new MockProductCatalogRepository(); var navigationService = new MockNavigationService(); var searchPaneService = new MockSearchPaneService(); repository.GetCategoryAsyncDelegate = (categoryId) => { Category category = null; if (categoryId == 1) { category = new Category { Id = categoryId, Title = "CategoryTitle" }; } return Task.FromResult(category); }; repository.GetSubcategoriesAsyncDelegate = (categoryId) => { ReadOnlyCollection<Category> categories = null; if (categoryId == 1) { categories = new ReadOnlyCollection<Category>(new List<Category> { new Category(), new Category(), new Category() }); } return Task.FromResult(categories); }; var viewModel = new GroupDetailPageViewModel(repository, navigationService, null, null, searchPaneService); viewModel.OnNavigatedTo(1, NavigationMode.New, null); Assert.IsNotNull(viewModel.Items); Assert.AreEqual(3, ((ICollection<CategoryViewModel>)viewModel.Items).Count); Assert.AreEqual("CategoryTitle", viewModel.Title); }
public void OnNavigatedTo_Fill_Items_And_SelectedProduct() { var repository = new MockProductCatalogRepository(); var navigationService = new MockNavigationService(); repository.GetProductAsyncDelegate = (productNumber) => { Product product = null; if (productNumber == "1") { product = new Product { ProductNumber = productNumber, SubcategoryId = 1 }; } return Task.FromResult(product); }; repository.GetProductsAsyncDelegate = (subCategoryId) => { ReadOnlyCollection<Product> products = null; if (subCategoryId == 1) { products = new ReadOnlyCollection<Product>(new List<Product> { new Product(){ ProductNumber = "1", ImageUri = new Uri("http://image") }, new Product(){ ProductNumber = "2", ImageUri = new Uri("http://image") }, new Product(){ ProductNumber = "3", ImageUri = new Uri("http://image") } }); } return Task.FromResult(products); }; var target = new ItemDetailPageViewModel(repository, navigationService, new MockShoppingCartRepository(), null, null, null, new MockSearchPaneService()); target.OnNavigatedTo("1", NavigationMode.New, null); Assert.IsNotNull(target.Items); Assert.AreEqual(3, ((IReadOnlyCollection<ProductViewModel>)target.Items).Count); Assert.AreEqual(target.Items.First(), target.SelectedProduct); }
public void OnNavigatedTo_Fill_RootCategories() { var repository = new MockProductCatalogRepository(); var navigationService = new MockNavigationService(); var searchPaneService = new MockSearchPaneService(); repository.GetCategoriesAsyncDelegate = (maxAmmountOfProducts) => { var categories = new ReadOnlyCollection<Category>(new List<Category>{ new Category(), new Category(), new Category() }); return Task.FromResult(categories); }; var viewModel = new HubPageViewModel(repository, navigationService, null, null, searchPaneService); viewModel.OnNavigatedTo(null, NavigationMode.New, null); Assert.IsNotNull(viewModel.RootCategories); Assert.AreEqual(((ICollection<CategoryViewModel>)viewModel.RootCategories).Count, 3); }
public void ProductNav_With_Valid_Parameter() { var repository = new MockProductCatalogRepository(); var navigationService = new MockNavigationService(); var productToNavigate = new ProductViewModel(new Product() { ListPrice = 100, ProductNumber = "p1", ImageUri = new Uri("http://image"), Currency = "USD", Title = "My Title", Description = "My Description", }); navigationService.NavigateDelegate = (pageName, categoryId) => { Assert.AreEqual("ItemDetail", pageName); Assert.AreEqual(productToNavigate.ProductNumber, categoryId); return true; }; var viewModel = new HubPageViewModel(repository, navigationService, null, null, null); viewModel.ProductNavigationAction.Invoke(productToNavigate); }
public async Task GoBack_When_CanGoBack_Is_True() { var repository = new MockProductCatalogRepository(); var navigationService = new MockNavigationService { CanGoBackDelegate = () => true, GoBackDelegate = () => Assert.IsTrue(true, "I can go back") }; var target = new ItemDetailPageViewModel(repository, navigationService, new MockShoppingCartRepository(), null, null, null, null); bool canExecute = target.GoBackCommand.CanExecute(); if (canExecute) { await target.GoBackCommand.Execute(); } else { Assert.Fail(); } }
public void FailedCallToProductCatalogRepository_ShowsAlert() { var alertCalled = false; var productCatalogRepository = new MockProductCatalogRepository(); var navService = new MockNavigationService(); var searchPaneService = new MockSearchPaneService(); productCatalogRepository.GetCategoriesAsyncDelegate = (maxAmmountOfProducts) => { throw new HttpRequestException(); }; var alertMessageService = new MockAlertMessageService(); alertMessageService.ShowAsyncDelegate = (s, s1) => { alertCalled = true; Assert.AreEqual("Error", s1); return Task.FromResult(string.Empty); }; var target = new HubPageViewModel(productCatalogRepository, navService, alertMessageService, new MockResourceLoader(), searchPaneService); target.OnNavigatedTo(null, NavigationMode.New, null); Assert.IsTrue(alertCalled); }
public void GoBack_When_CanGoBack_Is_True() { var repository = new MockProductCatalogRepository(); var navigationService = new MockNavigationService(); navigationService.CanGoBackDelegate = () => true; navigationService.GoBackDelegate = () => Assert.IsTrue(true); var viewModel = new GroupDetailPageViewModel(repository, navigationService, null, null, null); bool canExecute = viewModel.GoBackCommand.CanExecute(); if (canExecute) viewModel.GoBackCommand.Execute(); }