diff --git a/sahara/db/sqlalchemy/api.py b/sahara/db/sqlalchemy/api.py index 3f10450897..752fdc5bd6 100644 --- a/sahara/db/sqlalchemy/api.py +++ b/sahara/db/sqlalchemy/api.py @@ -82,6 +82,8 @@ def _get_prev_and_next_objects(objects, limit, marker, order=None): if obj.id == marker.id: position = pos break + else: + return None, None if position - limit >= 0: prev_marker = objects[position - limit].id else: diff --git a/sahara/tests/unit/db/test_utils.py b/sahara/tests/unit/db/test_utils.py index 26cc86c916..6943006a24 100644 --- a/sahara/tests/unit/db/test_utils.py +++ b/sahara/tests/unit/db/test_utils.py @@ -40,6 +40,9 @@ class TestPaginationUtils(testtools.TestCase): res = api._get_prev_and_next_objects(query, 5, mock.MagicMock(id=4)) self.assertEqual((None, 9), res) + res = api._get_prev_and_next_objects(query, 5, mock.MagicMock(id=100)) + self.assertEqual((None, None), res) + def test_parse_sorting_args(self): self.assertEqual(("name", "desc"), api._parse_sorting_args("-name")) self.assertEqual(("name", "asc"), api._parse_sorting_args("name"))