public void NextPageOnFirstPage() { var context = new PaginationContext(EmptyQuery, 10); var target = new PaginationQuery(context); Assert.Equal("?page[number]=1", target.NextPage); }
public void NextPageWorks() { var context = new PaginationContext(GetQuery(Constants.PageNumberQueryName, "4"), 10); var target = new PaginationQuery(context); Assert.Equal("?page[number]=5", target.NextPage); }
public void NoPrevious() { var context = new PaginationContext(GetQuery(Constants.PageNumberQueryName, "0"), 10); var target = new PaginationQuery(context); Assert.Null(target.PreviousPage); }
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); }
public void NoContext() { var target = new PaginationQuery(null); Assert.Null(target.FirstPage); Assert.Null(target.NextPage); Assert.Null(target.PreviousPage); }
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); }
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); }
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; }
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; }