From d411de8cb97045c9b7e51dec6182a89edef2701d Mon Sep 17 00:00:00 2001 From: Javier Sancho Date: Fri, 25 May 2018 13:25:50 +0200 Subject: [PATCH] Tests for paginating tables and arrays --- tests/fixtures.py | 2 +- tests/test_api.py | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/tests/fixtures.py b/tests/fixtures.py index d5fdb05..bbca118 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -11,7 +11,7 @@ def app_client(max_returned_rows=None): [filepath], config={ 'default_page_size': 50, - 'max_returned_rows': max_returned_rows or 100, + 'max_returned_rows': max_returned_rows or 1000, } ) client = ds.app().test_client diff --git a/tests/test_api.py b/tests/test_api.py index c9ef73e..2274c3d 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -63,7 +63,7 @@ def test_custom_sql(app_client): 'sql': 'select identity from [/group1/table1]', 'params': {} } == data['query'] - assert 50 == len(data['rows']) + assert 1000 == len(data['rows']) assert [ {'identity': 'This is particle: 0'}, {'identity': 'This is particle: 1'}, @@ -172,3 +172,25 @@ def test_table_shape_invalid(app_client): 'status': 400, 'title': None, } == response.json + +@pytest.mark.parametrize('path, expected_rows, expected_pages', [ + ('/test_tables/%2Farray1.json', 2, 1), + ('/test_tables/%2Farray1.json?_size=1', 2, 2), + ('/test_tables/%2Fgroup1%2Farray2.json?_size=1000', 10000, 10), +]) +def test_paginate_tables_and_arrays(app_client, path, expected_rows, expected_pages): + fetched = [] + count = 0 + while path: + response = app_client.get(path, gather_request=False) + print("*****", response.json) + assert 200 == response.status + count += 1 + fetched.extend(response.json['rows']) + path = response.json['next_url'] + if path: + assert response.json['next'] + assert '_next={}'.format(response.json['next']) in path + + assert expected_rows == len(fetched) + assert expected_pages == count -- 2.39.2