コード例 #1
0
        public void NextPageOnFirstPage()
        {
            var context = new PaginationContext(EmptyQuery, 10);
            var target = new PaginationQuery(context);

            Assert.Equal("?page[number]=1", target.NextPage);
        }
コード例 #2
0
        public void NextPageWorks()
        {
            var context = new PaginationContext(GetQuery(Constants.PageNumberQueryName, "4"), 10);
            var target = new PaginationQuery(context);

            Assert.Equal("?page[number]=5", target.NextPage);
        }
コード例 #3
0
        public void NoPrevious()
        {
            var context = new PaginationContext(GetQuery(Constants.PageNumberQueryName, "0"), 10);
            var target = new PaginationQuery(context);

            Assert.Null(target.PreviousPage);
        }
コード例 #4
0
        public void PreviousPageWorks()
        {
            var context = new PaginationContext(GetQuery(Constants.QueryNames.PageNumber, "4"), 10);
            var target = new PaginationQuery(context);

            Assert.Equal("?page[number]=3", target.PreviousPage);
        }
コード例 #5
0
        public void NoContext()
        {
            var target = new PaginationQuery(null);

            Assert.Null(target.FirstPage);
            Assert.Null(target.NextPage);
            Assert.Null(target.PreviousPage);
        }
コード例 #6
0
        public void SupportsOtherQueryParams()
        {
            var context = new PaginationContext(GetQuery(Constants.PageNumberQueryName, "3").Concat(GetQuery("something", "hello")), 10);
            var target = new PaginationQuery(context);

            Assert.Equal("?page[number]=4&something=hello", target.NextPage);
            Assert.Equal("?page[number]=2&something=hello", target.PreviousPage);
            Assert.Equal("?page[number]=0&something=hello", target.FirstPage);
        }
コード例 #7
0
        public void FirstPageWorks()
        {
            var context = new PaginationContext(EmptyQuery, 10);
            var target = new PaginationQuery(context);

            Assert.Equal("?page[number]=0", target.FirstPage);

            context = new PaginationContext(GetQuery(Constants.PageNumberQueryName, "0"), 10);
            target = new PaginationQuery(context);

            Assert.Equal("?page[number]=0", target.FirstPage);

            context = new PaginationContext(GetQuery(Constants.PageNumberQueryName, "4"), 10);
            target = new PaginationQuery(context);

            Assert.Equal("?page[number]=0", target.FirstPage);
        }
コード例 #8
0
        private JToken CreateTopLevelLinks(SerializationContext serializationContext, int itemCount = 0)
        {
            var result = new JObject
            {
                ["self"] = serializationContext.BaseUrl
            };

            if (serializationContext.QueryContext?.Pagination != null)
            {
                var queryStrings = new PaginationQuery(serializationContext.QueryContext.Pagination);

                var left = new Uri(serializationContext.BaseUrl).GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.Unescaped);

                if (queryStrings.FirstPage != null)
                {
                    result["first"] = new Uri(left + queryStrings.FirstPage);
                }

                if (queryStrings.NextPage != null && itemCount >= serializationContext.QueryContext.Pagination.PerPage)
                {
                    result["next"] = new Uri(left + queryStrings.NextPage);
                }

                if (queryStrings.PreviousPage != null)
                {
                    result["prev"] = new Uri(left + queryStrings.PreviousPage);
                }
            }

            return result;
        }
コード例 #9
0
        private JToken CreateTopLevelLinks(int count)
        {
            var result = new JObject
            {
                ["self"] = _baseUrl
            };

            var queryStrings = new PaginationQuery(_paginationContext);

            var left = _baseUrl.GetLeftPart(UriPartial.Path);

            if (queryStrings.FirstPage != null)
            {
                result["first"] = new Uri(left + queryStrings.FirstPage);
            }

            if (queryStrings.NextPage != null && count >= _paginationContext.PerPage)
            {
                result["next"] = new Uri(left + queryStrings.NextPage);
            }

            if (queryStrings.PreviousPage != null)
            {
                result["prev"] = new Uri(left + queryStrings.PreviousPage);
            }

            return result;
        }