public void CanPaginate(int firstPage, int secondPage) { // Arrange Mock <IRepository <Cat> > mock = new Mock <IRepository <Cat> >(); mock.Setup(m => m.All()).Returns(new List <Cat> { new Cat { Id = 1, Name = "C1" }, new Cat { Id = 2, Name = "C2" }, new Cat { Id = 3, Name = "C3" }, new Cat { Id = 4, Name = "C4" }, new Cat { Id = 5, Name = "C5" } }.AsQueryable()); HomeController controller = new HomeController(mock.Object); // Act CatListViewModel firstPageResult = (CatListViewModel)controller.Index(firstPage).ViewData.Model; CatListViewModel secondPageResult = (CatListViewModel)controller.Index(secondPage).ViewData.Model; // Assert CatModel[] firstPageCats = firstPageResult.Cats.ToArray(); Assert.True(firstPageCats.Length == 3); Assert.Equal("C1", firstPageCats[0].Name); Assert.Equal("C2", firstPageCats[1].Name); Assert.Equal("C3", firstPageCats[2].Name); CatModel[] secondPageCats = secondPageResult.Cats.ToArray(); Assert.True(secondPageCats.Length == 2); Assert.Equal("C4", secondPageCats[0].Name); Assert.Equal("C5", secondPageCats[1].Name); }
public ViewResult Index(int page = 1) { var result = new CatListViewModel() { Cats = this.cats .All() .Select(c => new CatModel() { Id = c.Id, Name = c.Name }) .Skip((page - 1) * ItemsPerPage) .Take(ItemsPerPage), PagingInfo = new PagingInfo() { CurrentPage = page, ItemsPerPage = ItemsPerPage, TotalItems = cats.All().Count() } }; return(View(result)); }