예제 #1
0
        public void ObtainTenPageMetaData_GivenPageSizeOfOneOnFirstPage()
        {
            PaginationHelper paginationHelper = new PaginationHelper();

            PaginationHeaderResponse paginationHeaderResponse = paginationHelper.AddPaginationHeaderMetaDataToResponse(
                CreateMockPaginatedResult(1, 1, 10, 1),
                CreateMockCurrentFilters(),
                CreateMockOrderByQueryParams(),
                "ApplicationList",
                CreateMockUrlHelper(),
                CreateMockHttpResponse()
                );

            Assert.True(paginationHeaderResponse.Current == 1, $"Expecting current page to be 1, but actual current value is {paginationHeaderResponse.Current}");
            Assert.True(paginationHeaderResponse.Count == 10, $"Expecting result count to be 10, but actual current value is {paginationHeaderResponse.Count}");
            Assert.True(paginationHeaderResponse.Size == 1, $"Expecting result page size to be 1, but actual current value is {paginationHeaderResponse.Size}");
            Assert.True(paginationHeaderResponse.Total == 10, $"Expecting result total to be 10, but actual current value is {paginationHeaderResponse.Total}");
            string expectedNextUrl = "https://www.test-domain.com?page=2&size=1&filterName=testFilterName&orderBy=test1_desc,test2";

            Assert.True(paginationHeaderResponse.Next == expectedNextUrl, $"Expecting next URL to be '{expectedNextUrl}', but actual value is '{paginationHeaderResponse.Next}'");
            Assert.True(paginationHeaderResponse.Prev == null, $"Expecting null Prev URL, but obtained the following {paginationHeaderResponse.Prev}");
            string expectedFirstUrl = "https://www.test-domain.com?page=1&size=1&filterName=testFilterName&orderBy=test1_desc,test2";

            Assert.True(paginationHeaderResponse.First == expectedFirstUrl, $"Expected a first page URL of '{expectedFirstUrl}', but obtained the following: '{paginationHeaderResponse.First}'");
            string expectedLastUrl = "https://www.test-domain.com?page=10&size=1&filterName=testFilterName&orderBy=test1_desc,test2";

            Assert.True(paginationHeaderResponse.Last == expectedLastUrl, $"Expected a last page URL of '{expectedLastUrl}', but obtained the following: '{paginationHeaderResponse.Last}'");
        }
예제 #2
0
        public PaginationHeaderResponse AddPaginationHeaderMetaDataToResponse <T>(IPaginatedResult <T> paginatedResult, List <KeyValuePair <string, string> > filters, string orderBy, string pageRouteName,
                                                                                  IUrlHelper urlHelper, HttpResponse response) where T : class
        {
            var previousPageLink = paginatedResult.CurrentPage > 1
                ? CreatePagedLinkRelToCurrentPage(paginatedResult, filters, orderBy, urlHelper, pageRouteName, -1)
                : null;


            var nextPageLink = HasNextPage(paginatedResult)
                ? CreatePagedLinkRelToCurrentPage(paginatedResult, filters, orderBy, urlHelper, pageRouteName, 1)
                : null;

            var first = CreatePageLink(pageSize: paginatedResult.PageSize,
                                       pageNumber: 1,
                                       pageRouteName: pageRouteName,
                                       filters: filters,
                                       orderBy: orderBy,
                                       urlHelper: urlHelper);

            var last = CreatePageLink(pageSize: paginatedResult.PageSize,
                                      pageNumber: GetTotalPages(paginatedResult),
                                      pageRouteName: pageRouteName,
                                      filters: filters,
                                      orderBy: orderBy,
                                      urlHelper: urlHelper);

            PaginationHeaderResponse paginationHeaderResponse = new PaginationHeaderResponse
            {
                Total   = GetTotalPages(paginatedResult),
                Size    = paginatedResult.PageSize,
                Count   = paginatedResult.RowCount,
                Current = paginatedResult.CurrentPage,
                Prev    = previousPageLink,
                Next    = nextPageLink,
                First   = first,
                Last    = last
            };


            response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(paginationHeaderResponse));

            return(paginationHeaderResponse);
        }