diff --git a/tableauserverclient/server/pager.py b/tableauserverclient/server/pager.py index eaad398af..1a6bfe17c 100644 --- a/tableauserverclient/server/pager.py +++ b/tableauserverclient/server/pager.py @@ -1,4 +1,5 @@ from . import RequestOptions +from . import Sort class Pager(object): @@ -16,6 +17,11 @@ def __init__(self, endpoint, request_opts=None): self._count = ((self._options.pagenumber - 1) * self._options.pagesize) else: self._count = 0 + self._options = RequestOptions() + + # Pager assumes deterministic order but solr doesn't guarantee sort order unless specified + if not self._options.sort: + self._options.sort.add(Sort(RequestOptions.Field.Name, RequestOptions.Direction.Asc)) def __iter__(self): # Fetch the first page diff --git a/test/test_pager.py b/test/test_pager.py index e3cec1ce8..5a6e9a4ed 100644 --- a/test/test_pager.py +++ b/test/test_pager.py @@ -55,10 +55,10 @@ def test_pager_with_options(self): page_3 = f.read().decode('utf-8') with requests_mock.mock() as m: # Register Pager with some pages - m.get(self.baseurl + "?pageNumber=1&pageSize=1", text=page_1) - m.get(self.baseurl + "?pageNumber=2&pageSize=1", text=page_2) - m.get(self.baseurl + "?pageNumber=3&pageSize=1", text=page_3) - m.get(self.baseurl + "?pageNumber=1&pageSize=3", text=page_1) + m.get(self.baseurl + "?pageNumber=1&pageSize=1&sort=name:asc", complete_qs=True, text=page_1) + m.get(self.baseurl + "?pageNumber=2&pageSize=1&sort=name:asc", complete_qs=True, text=page_2) + m.get(self.baseurl + "?pageNumber=3&pageSize=1&sort=name:asc", complete_qs=True, text=page_3) + m.get(self.baseurl + "?pageNumber=1&pageSize=3&sort=name:asc", complete_qs=True, text=page_1) # Starting on page 2 should get 2 out of 3 opts = TSC.RequestOptions(2, 1)