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"]); } }
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"); }