public void NavMenuIncludesAlphabeticalListOfDistinctCategories()
        {
            var mockProductsRepository = UnitTestHelpers.MockProductsRepository(
                new Product { Category = "Vegetable", Name = "ProductA" },
                new Product { Category = "Animal", Name = "ProductB" },
                new Product { Category = "Vegetable", Name = "ProductC" },
                new Product { Category = "Mineral", Name = "ProductD" }
            );

            var controller = new NavController(mockProductsRepository);
            var result = controller.Menu(null);

            var categoryLinks = ((IEnumerable<NavLink>)result.ViewData.Model)
                                .Where(x => x.RouteValues["category"] != null);

            CollectionAssert.AreEqual(new[] { "Animal", "Mineral", "Vegetable" }, categoryLinks.Select(x => x.RouteValues["category"]));

            foreach (var link in categoryLinks) {
                link.RouteValues["controller"].ShouldEqual("Products");
                link.RouteValues["action"].ShouldEqual("List");
                link.RouteValues["page"].ShouldEqual(1);
                link.Text.ShouldEqual(link.RouteValues["category"]);
            }
        }
示例#2
0
 public void Can_Create_Categories()
 {
     // Arrange
     // - create the mock repository
     Mock<IProductRepository> mock = new Mock<IProductRepository>();
     mock.Setup(m => m.Products).Returns(new Product[] {
         new Product {ProductID = 1, Name = "P1", Category = "Apples"},
         new Product {ProductID = 2, Name = "P2", Category = "Apples"},
         new Product {ProductID = 3, Name = "P3", Category = "Plums"},
         new Product {ProductID = 4, Name = "P4", Category = "Oranges"},
         });
     // Arrange - create the controller
     NavController target = new NavController(mock.Object);
     // Act = get the set of categories
     string[] results = ((IEnumerable<string>)target.Menu().Model).ToArray();
     // Assert
     Assert.AreEqual(results.Length, 3);
     Assert.AreEqual(results[0], "Apples");
     Assert.AreEqual(results[1], "Oranges");
     Assert.AreEqual(results[2], "Plums");
 }