public void CategoryRendersRendersViewDataWithProdcutsListing()
        {
            // Arrange mocks
            var catalogService = new Mock<IProductsCatalogService>();
            catalogService
                .Setup(c => c.GetCategoryName(2))
                .Returns("FooCategory");
            catalogService.Setup(c => c
                .GetProducts(2))
                .Returns(new List<Product>
                {
                    new Product { Id = 4 , Name = "Foo"},
                    new Product { Id = 7 , Name = "Bar"}
                });

            // Target object
            var controller = new ProductsController(catalogService.Object);

            // Act
            var result = controller.Category(2);

            // Assert
            var viewData = ((ViewResult)result).ViewData.Model as ProductsListViewData;
            Assert.IsNotNull(viewData);
            Assert.AreEqual(2, viewData.Products.Count);
            Assert.AreEqual(4, viewData.Products[0].Id);
            Assert.AreEqual("Bar", viewData.Products[1].Name);
        }
        public void CategoryRendersProductsListWithProductsListViewData()
        {
            // Arrange mocks
            var catalogService = new Mock<IProductsCatalogService>();

            // Target object
            var controller = new ProductsController(catalogService.Object);

            // Act
            var result = controller.Category(2);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result is ViewResult);
            var viewResult = (ViewResult)result;
            Assert.IsNotNull(viewResult.ViewData.Model);
            Assert.That(viewResult.ViewData.Model is ProductsListViewData);
        }
        public void CategoryRendersRendersViewDataWithCategoryInfo()
        {
            // Arrange mocks
            var catalogService = new Mock<IProductsCatalogService>();
            catalogService
                .Setup(c => c.GetCategoryName(2))
                .Returns("FooCategory");

            // Target object
            var controller = new ProductsController(catalogService.Object);

            // Act
            var result = controller.Category(2);

            // Assert
            // We don't repeat the assertions from the previous test here
            var viewData = ((ViewResult)result).ViewData.Model as ProductsListViewData;
            Assert.IsNotNull(viewData);
            Assert.AreEqual(2, viewData.CategoryId);
            Assert.AreEqual("FooCategory", viewData.CategoryName);
        }