public void TestCreateP()
        {
            var rand    = new Random();
            var product = new Product
            {
                name = rand.NextDouble().ToString(),
                product_description = rand.NextDouble().ToString(),
                price = -rand.Next()
            };

            var controller = new ProductsController();

            var result0 = controller.Create(product, null) as ViewResult;

            Assert.IsNotNull(result0);
            Assert.AreEqual("price is less than zero", controller.ModelState["price"].Errors[0].ErrorMessage);

            product.price = -product.price;
            controller.ModelState.Clear();

            result0 = controller.Create(product, null) as ViewResult;
            Assert.IsNotNull(result0);
            Assert.AreEqual("Picture not found!", controller.ModelState[""].Errors[0].ErrorMessage);

            var picture = new Mock <HttpPostedFileBase>();
            var server  = new Mock <HttpServerUtilityBase>();
            var context = new Mock <HttpContextBase>();

            context.Setup(c => c.Server).Returns(server.Object);
            controller.ControllerContext = new ControllerContext(context.Object, new System.Web.Routing.RouteData(), controller);

            var filename = String.Empty;

            server.Setup(s => s.MapPath(It.IsAny <string>())).Returns <string>(s => s);
            picture.Setup(P => P.SaveAs(It.IsAny <string>())).Callback <string>(s => filename = s);

            using (var scope = new TransactionScope())
            {
                controller.ModelState.Clear();
                var result1 = controller.Create(product, picture.Object) as RedirectToRouteResult;
                Assert.IsNotNull(result1);
                Assert.AreEqual("Index", result1.RouteValues["action"]);


                var db     = new CsK24T26Entities();
                var entity = db.Products.SingleOrDefault(p => p.name == product.name && p.product_description == product.product_description);
                Assert.IsNotNull(entity);
                Assert.AreEqual(product.price, entity.price);

                Assert.IsTrue(filename.StartsWith("~/Upload/products/"));
                Assert.IsTrue(filename.EndsWith(entity.id.ToString()));
            }
        }
        public void TestList()
        {
            var controller = new ProductsController();

            var result = controller.List() as ViewResult;

            Assert.IsNotNull(result);

            var model = result.Model as List <Product>;

            Assert.IsNotNull(model);

            var db = new CsK24T26Entities();

            Assert.AreEqual(db.Products.Count(), model.Count);
        }