public void CanRetrieveImageData()
        {
            // Arrange - create a Product with image data
            var product = new Product
                {
                   ProductId = 2, Name = "Test", ImageData = new byte[] { }, ImageMimeType = "image/png" 
                };

            // Arrange - create the mock repository
            var localMock = new Mock<IProductRepository>();
            localMock.Setup(m => m.Products).Returns(
                new[]
                    {
                       new Product { ProductId = 1, Name = "P1" }, product, new Product { ProductId = 3, Name = "P3" } 
                    }.
                    AsQueryable());

            // Arrange - create the controller
            var controller = new ProductController(localMock.Object);

            // Action - call the GetImage action method
            ActionResult result = controller.GetImage(2);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(FileResult));
            Assert.AreEqual(product.ImageMimeType, ((FileResult)result).ContentType);
        }
        public void CannotRetrieveImageDataForInvalidId()
        {
            // Arrange - create the controller
            var controller = new ProductController(_mockRepository.Object);

            // Action - call the GetImage action method
            ActionResult result = controller.GetImage(100);

            // Assert
            Assert.IsNull(result);
        }
        public void CategoriesReturnsEveryCategory()
        {
            // Arrange - create a controller
            var controller = new ProductController(_mockRepository.Object);

            // Action
            var result = (PartialViewResult)controller.Categories();

            // Assert
            Assert.AreEqual(((IQueryable<Category>)result.ViewData.Model).Count(), 5);
            Assert.IsTrue(((IQueryable<Category>)result.ViewData.Model).Count(o => o.Name == "C4") == 2);
        }
        public void ProductListReturnsAppropriateProducts()
        {
            // Arrange - create a controller
            var controller = new ProductController(_mockRepository.Object);

            // Action
            var result = (PartialViewResult)controller.ProductList(2);

            // Assert
            Assert.AreEqual(((IEnumerable<Product>)result.ViewData.Model).Count(), 2);
            Assert.IsTrue(((IEnumerable<Product>)result.ViewData.Model).Count(o => o.Name == "P4") == 1);
        }