示例#1
0
        public void ShouldCreateLinks(int pageNumber, int totalPages, bool needPrev, bool needNext, Mock <IUrlHelper> urlHelper, string routeName, int pageSize, int[] pageData)
        {
            // Arrange
            if (pageSize > PageParameters.MaxPageSize)
            {
                pageSize = PageParameters.MaxPageSize;
            }

            var pagedCollection = new PagedCollection <int>(pageData, pageNumber, totalPages, pageSize);
            var expectedCount   = (needPrev && needNext) ? 2 : ((needPrev || needNext) ? 1 : 0);

            // Act
            var result = pagedCollection.ToPagedResult(urlHelper.Object, routeName);

            // Assert
            Assert.Equal(needPrev, result.Links.ContainsKey(LinkType.PreviousPage));
            Assert.Equal(needNext, result.Links.ContainsKey(LinkType.NextPage));
            Assert.Equal(expectedCount, result.Links.Count);
            urlHelper.Verify(
                s => s.Link(routeName, It.Is <PageParameters>(p => p.PageNumber == pageNumber - 1 && p.PageSize == pageSize)),
                needPrev ? Times.Once() : Times.Never());
            urlHelper.Verify(
                s => s.Link(routeName, It.Is <PageParameters>(p => p.PageNumber == pageNumber + 1 && p.PageSize == pageSize)),
                needNext ? Times.Once() : Times.Never());
            Assert.All(result.Links, lnk => Assert.Equal("GET", lnk.Value.Method));
        }