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); } }
/// <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, }); }