public void PaginateTest() { Mock <IToyRepository> mock = new Mock <IToyRepository>(); mock.Setup(t => t.Toys).Returns(new Toy[] { new Toy { ToyID = 1, Name = "Misio" }, new Toy { ToyID = 2, Name = "Lalka" }, new Toy { ToyID = 3, Name = "Samochodzik" }, new Toy { ToyID = 4, Name = "Piłka" }, new Toy { ToyID = 5, Name = "Pistolet" } }.AsQueryable()); ToyController controller = new ToyController(mock.Object); controller.PageSize = 3; ToyListViewModel result = (ToyListViewModel)controller.List(null, 2).Model; Toy[] toyArray = result.Toys.ToArray(); Assert.IsTrue(toyArray.Length == 2); Assert.AreEqual(toyArray[0].Name, "Piłka"); Assert.AreEqual(toyArray[1].Name, "Pistolet"); }
public ViewResult List(string category, int page = 1) { ToyListViewModel model = new ToyListViewModel { Toys = repository.Toys .Where(t => category == null || t.Category == category) .OrderBy(t => t.ToyID) .Skip((page - 1) * PageSize) .Take(PageSize), PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = PageSize, TotalItems = category == null? repository.Toys.Count() : repository.Toys.Where(c => c.Category == category).Count() }, CurrentCategory = category }; return(View(model)); }
public void SendPaginationViewModelTest() { Mock <IToyRepository> mock = new Mock <IToyRepository>(); mock.Setup(t => t.Toys).Returns(new Toy[] { new Toy { ToyID = 1, Name = "Misio" }, new Toy { ToyID = 2, Name = "Lalka" }, new Toy { ToyID = 3, Name = "Samochodzik" }, new Toy { ToyID = 4, Name = "Piłka" }, new Toy { ToyID = 5, Name = "Pistolet" } }.AsQueryable()); ToyController controller = new ToyController(mock.Object); controller.PageSize = 3; ToyListViewModel result = (ToyListViewModel)controller.List(null, 2).Model; PagingInfo pageInfo = result.PagingInfo; Assert.AreEqual(pageInfo.CurrentPage, 2); Assert.AreEqual(pageInfo.ItemsPerPage, 3); Assert.AreEqual(pageInfo.TotalItems, 5); Assert.AreEqual(pageInfo.TotalPages, 2); }
// GET: Item //[HttpGet] public IActionResult Index(ToyListViewModel model, string showAs, string display, string search, string sortBy, int?filterBy, int?page) { model.Categories = FormHelper.GetFilterFormCategories(_categoryRepository.GetCategories()); model.Sort = FormHelper.GetFormSortBy(); ViewData["showAs"] = showAs; ViewData["search"] = search; ViewData["display"] = display; ViewData["filterBy"] = filterBy; ViewData["sortBy"] = sortBy; IQueryable <Toy> Toys; if (!String.IsNullOrEmpty(search)) { page = 1; Toys = _toyRepository.GetToysContaining(search); } else { switch (display) { case "wanted": ViewBag.Section = "Wanted toys"; Toys = _toyRepository.GetWantedToys(); break; case "collection": default: ViewBag.Section = "My collection"; Toys = _toyRepository.GetMyToys(); break; } } if (filterBy != null && filterBy != 0) { Toys = Toys.Where(x => x.Category.Id == filterBy); if (HttpContext.Request.Method == "POST") { page = 1; } } if (!String.IsNullOrEmpty(sortBy)) { FormHelper.SortBy sort = (FormHelper.SortBy)Enum.Parse(typeof(FormHelper.SortBy), sortBy); switch (sort) { default: case FormHelper.SortBy.Name: Toys = Toys.OrderBy(s => s.Name); break; case FormHelper.SortBy.Producer: Toys = Toys.OrderBy(s => s.Producer.Name); break; case FormHelper.SortBy.Category: Toys = Toys.OrderBy(s => s.Category.Name); break; } if (HttpContext.Request.Method == "POST") { page = 1; } } ViewData["Page"] = page; ViewData["TotalItems"] = Toys.Count(); page = (page - 1) ?? 0; model.Toys = new PaginatedList <Toy>(Toys, page.Value); model.TotalPrice = Toys.Sum(x => x.Price); return(View(model)); }