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");
        }
Beispiel #2
0
        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));
        }