public void CanSendPaginationViewModel() { // Arrange Mock <ICubeRepository> mock = new Mock <ICubeRepository>(); mock.Setup(m => m.Cubes).Returns(new List <Cube> { new Cube { CubeId = 1, Name = "Cube1" }, new Cube { CubeId = 2, Name = "Cube2" }, new Cube { CubeId = 3, Name = "Cube3" }, new Cube { CubeId = 4, Name = "Cube4" }, new Cube { CubeId = 5, Name = "Cube5" } }); CubeController controller = new CubeController(mock.Object); controller.pageSize = 3; // Act CubesListViewModel result = (CubesListViewModel)controller.List(null, 2).Model; // Assert PagingInfo pageInfo = result.PagingInfo; Assert.AreEqual(pageInfo.CurrentPage, 2); Assert.AreEqual(pageInfo.ItemsPerPage, 3); Assert.AreEqual(pageInfo.TotalItems, 5); Assert.AreEqual(pageInfo.TotalPages, 2); }
public void CanPaginate() { // Организация (arrange) Mock <ICubeRepository> mock = new Mock <ICubeRepository>(); mock.Setup(m => m.Cubes).Returns(new List <Cube> { new Cube { CubeId = 1, Name = "Cube1" }, new Cube { CubeId = 2, Name = "Cube2" }, new Cube { CubeId = 3, Name = "Cube3" }, new Cube { CubeId = 4, Name = "Cube4" }, new Cube { CubeId = 5, Name = "Cube5" } }); CubeController controller = new CubeController(mock.Object); controller.pageSize = 3; // Действие (act) CubesListViewModel result = (CubesListViewModel)controller.List(null, 2).Model; // Утверждение List <Cube> cubes = result.Cubes.ToList(); Assert.IsTrue(cubes.Count == 2); Assert.AreEqual(cubes[0].Name, "Cube4"); Assert.AreEqual(cubes[1].Name, "Cube5"); }
public ViewResult List(string category, int page = 1) { var first = repository.Cubes.FirstOrDefault(); CubesListViewModel model = new CubesListViewModel { Cubes = repository.Cubes .Where(p => category == null || p.Category == category) .OrderBy(cube => cube.CubeId) .Skip((page - 1) * pageSize) .Take(pageSize), PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = pageSize, TotalItems = category == null? repository.Cubes.Count() : repository.Cubes.Where(cube => cube.Category == category).Count() }, CurrentCategory = category }; return(View(model)); }