Esempio n. 1
0
        public void Can_Send_Pagination_View_Model()
        {
            Mock <IProductsRepository> mock = new Mock <IProductsRepository>();

            mock.Setup(m => m.Products).Returns(new Product[] {
                new Product                {
                    ProductID = 1, Name = "p1"
                },
                new Product {
                    ProductID = 2, Name = "p2"
                },
                new Product {
                    ProductID = 3, Name = "p3"
                },
                new Product {
                    ProductID = 4, Name = "p4"
                },
                new Product {
                    ProductID = 5, Name = "p5"
                },
            });
            ProductController controller = new ProductController(mock.Object);

            controller.pageSize = 3;
            //动作
            PruductsListViewModel result = (PruductsListViewModel)controller.List(null, 2).Model;
            //断言
            PagingInfo pageinfo = result.PageingInfo;

            Assert.AreEqual(pageinfo.CurrentPage, 2);
            Assert.AreEqual(pageinfo.ItemsPerPage, 3);
            Assert.AreEqual(pageinfo.TotalItems, 5);
            Assert.AreEqual(pageinfo.TotalPages, 2);
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="category">分类</param>
        /// <param name="page">默认页</param>
        /// <returns></returns>
        public ViewResult List(string category, int page = 1)
        {
            //return View(repository.Products.OrderBy(p=>p.ProductID).Skip((page-1)*pageSize).Take(pageSize));
            PruductsListViewModel model = new PruductsListViewModel()
            {
                Products    = repository.Products.Where(p => category == null || p.Category == category).OrderBy(p => p.ProductID).Skip((page - 1) * pageSize).Take(pageSize),
                PageingInfo = new PagingInfo
                {
                    CurrentPage  = page,
                    ItemsPerPage = pageSize,
                    TotalItems   = category == null?repository.Products.Count() : repository.Products.Where(e => e.Category == category).Count()
                },
                CurrentCategory = category
            };

            return(View(model));
        }
Esempio n. 3
0
        public void Can_Paginate()
        {
            //准备
            Mock <IProductsRepository> mock = new Mock <IProductsRepository>();

            mock.Setup(u => u.Products).Returns(new Product[] {
                new Product {
                    ProductID = 1, Name = "p1"
                },
                new Product {
                    ProductID = 2, Name = "p2"
                },
                new Product {
                    ProductID = 3, Name = "p3"
                },
                new Product {
                    ProductID = 4, Name = "p4"
                },
                new Product {
                    ProductID = 5, Name = "p5"
                },
                //new Product {ProductID=6,Name="p6" }
            });
            ProductController controller = new ProductController(mock.Object);

            controller.pageSize = 3;

            //动作
            PruductsListViewModel result = (PruductsListViewModel)controller.List(null, 2).Model;

            //断言
            Product[] productArray = result.Products.ToArray();
            Assert.IsTrue(productArray.Length == 2);
            Assert.AreEqual(productArray[0].Name, "p4");
            Assert.AreEqual(productArray[1].Name, "p5");
        }