Пример #1
0
        public void NewsOverviewPageHandler_CanMapFromContent()
        {
            // Arrange
            var mapper       = new UmbracoMapper();
            var handler      = new NewsOverviewPageHandler(mapper);
            var content      = MockNewsOverviewPage();
            var model        = new NewsOverviewPageViewModel();
            var pagingDetail = new PagingDetail(1, 2);

            // Act
            handler.Handle(content.Object, model, pagingDetail);

            // Assert
            Assert.AreEqual("News overview title", model.Title);
            Assert.AreEqual(3, model.NewsItemsPage.TotalItems);
            Assert.AreEqual(2, model.NewsItemsPage.TotalPages);
            Assert.AreEqual(1, model.NewsItemsPage.PageNumber);
            Assert.AreEqual(2, model.NewsItemsPage.PageSize);
            Assert.AreEqual(2, model.NewsItemsPage.Items.Count);
            Assert.AreEqual("Story 3", model.NewsItemsPage.Items[0].Title);
            Assert.AreEqual("/news/story-3/", model.NewsItemsPage.Items[0].Url);
            Assert.AreEqual("Story sub-header", model.NewsItemsPage.Items[0].SubHeader);
            Assert.AreEqual("/media/1.jpg", model.NewsItemsPage.Items[0].ImageUrl);
            Assert.AreEqual(new DateTime(2016, 11, 23).ToString("d-MMM-yyyy"), model.NewsItemsPage.Items[0].PublishDate.ToString("d-MMM-yyyy"));
            Assert.AreEqual(new string('*', 197) + "...", model.NewsItemsPage.Items[0].TruncatedBodyText);
        }
        public async Task FindAllAsync_With_Paging_Detail_Skips_Records()
        {
            using (var context = new TestProductContext(options))
            {
                var repo = new TestProductRepository(context);

                repo.Add(new TestProduct()
                {
                    Id = 1, Name = "Test Product 01", Price = 10
                });
                repo.Add(new TestProduct()
                {
                    Id = 2, Name = "Test Product 02", Price = 20
                });
                repo.Add(new TestProduct()
                {
                    Id = 3, Name = "Test Product 03", Price = 10
                });
                repo.Add(new TestProduct()
                {
                    Id = 4, Name = "Test Product 04", Price = 20
                });
            }

            using (var context = new TestProductContext(options))
            {
                var repo = new TestProductRepository(context);

                var pagingDetail = new PagingDetail(pageSize: 2, pageNumber: 1);

                var products = await repo.FindAllAsync(pagingDetail);

                Assert.AreEqual(2, products.Count());
            }
        }
        public void FindAll_With_Negative_PageNumber_Returns_Empty_List()
        {
            using (var context = new TestProductContext(options))
            {
                var repo = new TestProductRepository(context);

                repo.Add(new TestProduct()
                {
                    Id = 1, Name = "Test Product 01", Price = 10
                });
            }

            using (var context = new TestProductContext(options))
            {
                var repo = new TestProductRepository(context);

                var pagingDetail = new PagingDetail(pageSize: 1, pageNumber: -1);

                var products = repo.FindAll(pagingDetail);

                Assert.AreEqual(0, products.Count());
            }
        }
        public void FindAll_With_Paging_Detail_Skips_Records()
        {
            using (var context = new TestProductContext(options))
            {
                var repo = new TestProductRepository(context);

                repo.Add(new TestProduct()
                {
                    Id = 1, Name = "Test Product 01", Price = 10
                });
                repo.Add(new TestProduct()
                {
                    Id = 2, Name = "Test Product 02", Price = 20
                });
                repo.Add(new TestProduct()
                {
                    Id = 3, Name = "Test Product 03", Price = 10
                });
                repo.Add(new TestProduct()
                {
                    Id = 4, Name = "Test Product 04", Price = 20
                });
            }

            using (var context = new TestProductContext(options))
            {
                var repo = new TestProductRepository(context);

                var pagingDetail = new PagingDetail(pageSize: 2, pageNumber: 2);

                var products = repo.FindAll(pagingDetail);

                Assert.AreEqual(2, products.Count());
                Assert.AreEqual("Test Product 04", products.ElementAt(1).Name);
            }
        }
Пример #5
0
        /// <summary>
        /// Helper to create a paged collection of strongly typed items for a list
        /// </summary>
        /// <typeparam name="T">Type of list item</typeparam>
        /// <param name="items">Source items as <see cref="IPublishedContent"/></param>
        /// <param name="pagingDetail">Page number and size details</param>
        /// <param name="pagedItems">Paged list of items provided to caller in out parameter</param>
        /// <returns>Instance of <see cref="PagedCollection"/></returns>
        protected PagedCollection <T> CreatePagedCollection <T>(IList <IPublishedContent> items, PagingDetail pagingDetail, out IEnumerable <IPublishedContent> pagedItems)
        {
            var totalItems = items.Count;
            var totalPages = (int)Math.Ceiling(totalItems / (decimal)pagingDetail.PageSize);
            var pageNumber = Math.Max(1, Math.Min(pagingDetail.PageNumber, totalPages));

            pagedItems = items
                         .MostRecent()
                         .Skip((pageNumber - 1) * pagingDetail.PageSize)
                         .Take(pagingDetail.PageSize);

            return(new PagedCollection <T>
            {
                PageNumber = pageNumber,
                PageSize = pagingDetail.PageSize,
                TotalItems = totalItems,
                TotalPages = totalPages,
            });
        }