public void Can_Create_Categories() { Mock <IProductRepository> mock = new Mock <IProductRepository>(); mock.Setup(m => m.Products).Returns(new Product[] { new Product { ProductID = 1, Name = "P1", Category = "Apple" }, new Product { ProductID = 2, Name = "P2", Category = "Apple" }, new Product { ProductID = 3, Name = "P3", Category = "Samsung" }, new Product { ProductID = 4, Name = "P4", Category = "Microsoft" } }); NavController target = new NavController(mock.Object); //action SelectedCategoryModel result = (SelectedCategoryModel)target.Menu().Model; string[] categories = result.categories.ToArray(); //assert Assert.IsTrue(categories.Length == 3); Assert.AreEqual(categories[0], "Apple"); Assert.AreEqual(categories[1], "Microsoft"); Assert.AreEqual(categories[2], "Samsung"); }
//панель категорий //метод работает с частичным представлением и выбирает все различающиеся категории //paramHorizontalLayout --при сжатии браузера из Layout public PartialViewResult Menu(string category = null)//, bool paramHorizontalLayout=false) { //1 вариант---> пример использования ViewBag для подсветки кнопки в MenuHorizontal ViewBag.SelectedCategory = category; //2 вариант---> подсветка через модель представления в Menu SelectedCategoryModel modelCategory = new SelectedCategoryModel() { selectedCategory = category, categories = repository.Products .Select(x => x.Category) .Distinct() .OrderBy(y => y) }; //string viewName = paramHorizontalLayout ? "MenuHorizontal" : "Menu";--->после создания FlexMenu не нужно //return PartialView(viewName, modelCategory); return(PartialView("FlexMenu", modelCategory)); //относилось к 1 варианту---> пример использования ViewBag для подсветки кнопки //IEnumerable<string> categories = repository.Products // .Select(x => x.Category) // .Distinct() // .OrderBy(y => y); //!--тут упорядочиваем уже по отобранным категориям, т.е. у=x.Category //return PartialView(categories); }
//панель категорий //метод работает с частичным представлением и выбирает все различающиеся категории //paramHorizontalLayout --при сжатии браузера из Layout public PartialViewResult Menu(string category = null, bool horizontalLayout = false)//, bool paramHorizontalLayout=false) //1 вариант---> пример использования ViewBag для подсветки кнопки в MenuHorizontal { ViewBag.SelectedCategory = category; //2 вариант---> подсветка через модель представления в Menu SelectedCategoryModel modelCategory = new SelectedCategoryModel() { selectedCategory = category, categories = repository.Products .Select(x => x.Category) .Distinct() .OrderBy(y => y) }; //return PartialView(modelCategory); //string viewName = horizontalLayout ? "MenuHorizontal" : "Menu"; //return PartialView(viewName, modelCategory); return(PartialView("FlexMenu", modelCategory)); }
public void Indicates_Selected_Category() { Mock <IProductRepository> mock = new Mock <IProductRepository>(); mock.Setup(m => m.Products).Returns(new Product[] { new Product { ProductID = 1, Name = "P1", Category = "Apple" }, new Product { ProductID = 2, Name = "P2", Category = "Microsoft" } }); //arrange NavController target = new NavController(mock.Object); string categoryToSelect = "Microsoft"; //action //string result = target.Menu(categoryToSelect).ViewBag.SelectedCategory; SelectedCategoryModel selCat = (SelectedCategoryModel)target.Menu(categoryToSelect).Model; string result = selCat.selectedCategory; //assert Assert.AreEqual(categoryToSelect, result); }