public void TestCreate()
        {
            var session = new MockHttpSession();
            var context = new Mock <HttpContextBase>();

            context.Setup(c => c.Session).Returns(session);

            var controller = new ShoppingCartController();

            controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);

            var db     = new CsK24_BookStoreEntities();
            var sach   = db.SACHes.First();
            var result = controller.Create(sach.MASACH, 2) as RedirectToRouteResult;

            Assert.IsNotNull(result);
            Assert.AreEqual("Index", result.RouteValues["action"]);

            var shoppingCart = session["ShoppingCart"] as List <CHITIETHOADON>;

            Assert.IsNotNull(shoppingCart);
            Assert.AreEqual(1, shoppingCart.Count);
            Assert.AreEqual(sach.MASACH, shoppingCart.First().SACH.MASACH);
            Assert.AreEqual(2, shoppingCart.First().SOLUONG);
        }
        public void TestCreateP()
        {
            var rand = new Random();
            var sach = new SACH
            {
                TENSACH  = rand.NextDouble().ToString(),
                THONGTIN = rand.NextDouble().ToString(),
                GIASACH  = -rand.Next()
            };

            var controller = new SACHesController();

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

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

            sach.GIASACH = -sach.GIASACH;
            controller.ModelState.Clear();

            result0 = controller.Create(sach, 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(sach, picture.Object) as RedirectToRouteResult;
                Assert.IsNotNull(result1);
                Assert.AreEqual("Index", result1.RouteValues["action"]);

                var db     = new CsK24_BookStoreEntities();
                var entity = db.SACHes.SingleOrDefault(p => p.TENSACH == sach.TENSACH && p.THONGTIN == sach.THONGTIN);
                Assert.IsNotNull(entity);
                Assert.AreEqual(sach.GIASACH, entity.GIASACH);

                Assert.IsTrue(fileName.StartsWith("~/Upload/Sach/"));
                Assert.IsTrue(fileName.EndsWith(entity.MASACH.ToString()));
            }
        }
        public void TestIndex2()
        {
            var controller = new SACHesController();

            var result = controller.Index2() as ViewResult;

            Assert.IsNotNull(result);

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

            Assert.IsNotNull(model);

            var db = new CsK24_BookStoreEntities();

            Assert.AreEqual(db.SACHes.Count(), model.Count);
        }
        public void TestIndex()
        {
            var session = new MockHttpSession();
            var context = new Mock <HttpContextBase>();

            context.Setup(c => c.Session).Returns(session);

            var controller = new ShoppingCartController();

            controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);

            session["ShoppingCart"] = null;
            var result = controller.Index() as ViewResult;

            Assert.IsNotNull(result);

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

            Assert.IsNotNull(model);
            Assert.AreEqual(0, model.Count);

            var db           = new CsK24_BookStoreEntities();
            var sach         = db.SACHes.First();
            var shoppingCart = new List <CHITIETHOADON>();

            shoppingCart.Add(new CHITIETHOADON
            {
                SACH    = sach,
                SOLUONG = 1
            });

            var chitiethoadon = new CHITIETHOADON();

            chitiethoadon.SACH    = sach;
            chitiethoadon.SOLUONG = 2;
            shoppingCart.Add(chitiethoadon);

            session["ShoppingCart"] = shoppingCart;
            result = controller.Index() as ViewResult;
            Assert.IsNotNull(result);

            model = result.Model as List <CHITIETHOADON>;
            Assert.IsNotNull(model);
            Assert.AreEqual(1, model.Count);
            Assert.AreEqual(sach.MASACH, model.First().SACH.MASACH);
            Assert.AreEqual(3, model.First().SOLUONG);
        }
        public void TestDeleteP()
        {
            var db   = new CsK24_BookStoreEntities();
            var sach = db.SACHes.AsNoTracking().First();

            var controller = new SACHesController();

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

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

            var filePath = String.Empty;
            var tempDir  = System.IO.Path.GetTempFileName();

            server.Setup(s => s.MapPath(It.IsAny <string>())).Returns <string>(s =>
            {
                filePath = s;
                return(tempDir);
            });

            using (var scope = new TransactionScope())
            {
                System.IO.File.Delete(tempDir);
                System.IO.Directory.CreateDirectory(tempDir);
                tempDir = tempDir + "/";
                System.IO.File.Create(tempDir + sach.MASACH).Close();
                Assert.IsTrue(System.IO.File.Exists(tempDir + sach.MASACH));

                var result = controller.DeleteConfirmed(sach.MASACH) as RedirectToRouteResult;
                Assert.IsNotNull(result);
                Assert.AreEqual("Index", result.RouteValues["action"]);

                var entity = db.SACHes.Find(sach.MASACH);
                Assert.IsNull(entity);

                Assert.AreEqual("~/Upload/Sach/", filePath);
                Assert.IsFalse(System.IO.File.Exists(tempDir + sach.MASACH));
            }
        }
        public void TestDetails()
        {
            var controller = new SACHesController();
            var result0    = controller.Details(0) as HttpNotFoundResult;

            Assert.IsNotNull(result0);

            var db      = new CsK24_BookStoreEntities();
            var sach    = db.SACHes.First();
            var result1 = controller.Details(sach.MASACH) as ViewResult;

            Assert.IsNotNull(result1);

            var model = result1.Model as SACH;

            Assert.IsNotNull(model);
            Assert.AreEqual(sach.TENSACH, model.TENSACH);
            Assert.AreEqual(sach.GIASACH, model.GIASACH);
            Assert.AreEqual(sach.THONGTIN, model.THONGTIN);
        }
        public void TestSearch()
        {
            var db      = new CsK24_BookStoreEntities();
            var sach    = db.SACHes.ToList();
            var keyword = sach.First().TENSACH.Split().First();

            sach = sach.Where(p => p.TENSACH.ToLower().Contains(keyword.ToLower())).ToList();

            var controller = new SACHesController();
            var result     = controller.Search(keyword) as ViewResult;

            Assert.IsNotNull(result);

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

            Assert.IsNotNull(model);

            Assert.AreEqual("Index2", result.ViewName);
            Assert.AreEqual(sach.Count(), model.Count);
            Assert.AreEqual(keyword, result.ViewData["Keyword"]);
        }