X-Git-Url: https://git.jsancho.org/?p=datasette-pytables.git;a=blobdiff_plain;f=tests%2Ftest_api.py;h=eb0453a12c1e804fa9f6fa744ba810b2ceebaf4c;hp=b1900efcd422f91ae4b6fd253d74db0ec44ece95;hb=ab111327f9822300ab1d8605ff86cfcebb78aeee;hpb=48833d5bdbb105a09731696e3dc293a2e68460cc diff --git a/tests/test_api.py b/tests/test_api.py index b1900ef..eb0453a 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -15,7 +15,7 @@ def test_database_page(app_client): data = response.json assert 'test_tables' == data['database'] assert [{ - 'name': '/array1', + 'name': '%array1', 'columns': ['value'], 'primary_keys': [], 'count': 2, @@ -24,7 +24,7 @@ def test_database_page(app_client): 'foreign_keys': {'incoming': [], 'outgoing': []}, 'private': False, }, { - 'name': '/group1/array2', + 'name': '%group1%array2', 'columns': ['value'], 'primary_keys': [], 'count': 10000, @@ -33,7 +33,7 @@ def test_database_page(app_client): 'foreign_keys': {'incoming': [], 'outgoing': []}, 'private': False, }, { - 'name': '/group1/table1', + 'name': '%group1%table1', 'columns': ['identity', 'idnumber', 'speed'], 'primary_keys': [], 'count': 10000, @@ -42,7 +42,7 @@ def test_database_page(app_client): 'foreign_keys': {'incoming': [], 'outgoing': []}, 'private': False, }, { - 'name': '/group2/multi', + 'name': '%group2%multi', 'columns': ['value'], 'primary_keys': [], 'count': 10, @@ -51,7 +51,7 @@ def test_database_page(app_client): 'foreign_keys': {'incoming': [], 'outgoing': []}, 'private': False, }, { - 'name': '/group2/table2', + 'name': '%group2%table2', 'columns': ['identity', 'idnumber', 'speed'], 'primary_keys': [], 'count': 10000, @@ -64,13 +64,13 @@ def test_database_page(app_client): def test_custom_sql(app_client): response = app_client.get( '/test_tables.json?' + urlencode({ - 'sql': 'select identity from [/group1/table1]', + 'sql': 'select identity from [%group1%table1]', '_shape': 'objects' }), ) data = response.json assert { - 'sql': 'select identity from [/group1/table1]', + 'sql': 'select identity from [%group1%table1]', 'params': {} } == data['query'] assert 1000 == len(data['rows']) @@ -87,13 +87,13 @@ def test_custom_sql(app_client): def test_custom_complex_sql(app_client): response = app_client.get( '/test_tables.json?' + urlencode({ - 'sql': 'select identity from [/group1/table1] where speed > 100 and idnumber < 55', + 'sql': 'select identity from [%group1%table1] where speed > 100 and idnumber < 55', '_shape': 'objects', }), ) data = response.json assert { - 'sql': 'select identity from [/group1/table1] where speed > 100 and idnumber < 55', + 'sql': 'select identity from [%group1%table1] where speed > 100 and idnumber < 55', 'params': {}, } == data['query'] assert 4 == len(data['rows']) @@ -110,13 +110,13 @@ def test_custom_complex_sql(app_client): def test_custom_pytables_sql(app_client): response = app_client.get( '/test_tables.json?' + urlencode({ - 'sql': 'select identity from [/group1/table1] where (speed > 100) & (speed < 500)', + 'sql': 'select identity from [%group1%table1] where (speed > 100) & (speed < 500)', '_shape': 'objects', }), ) data = response.json assert { - 'sql': 'select identity from [/group1/table1] where (speed > 100) & (speed < 500)', + 'sql': 'select identity from [%group1%table1] where (speed > 100) & (speed < 500)', 'params': {}, } == data['query'] assert 199 == len(data['rows']) @@ -139,11 +139,11 @@ def test_invalid_custom_sql(app_client): def test_table_json(app_client): response = app_client.get( - '/test_tables/%2Fgroup2%2Ftable2.json?_shape=objects', + '/test_tables/%group2%table2.json?_shape=objects', ) assert response.status == 200 data = response.json - assert data['query']['sql'] == 'select identity, idnumber, speed from [/group2/table2] limit 51' + assert data['query']['sql'] == 'select identity, idnumber, speed from [%group2%table2] limit 51' assert data['rows'][3:6] == [{ 'identity': 'This is particle: 3', 'idnumber': 3, @@ -170,7 +170,7 @@ def test_table_not_exists_json(app_client): def test_table_shape_arrays(app_client): response = app_client.get( - '/test_tables/%2Fgroup2%2Ftable2.json?_shape=arrays', + '/test_tables/%group2%table2.json?_shape=arrays', ) assert [ ['This is particle: 6', 6, 12.0], @@ -179,7 +179,7 @@ def test_table_shape_arrays(app_client): def test_table_shape_objects(app_client): response = app_client.get( - '/test_tables/%2Fgroup2%2Ftable2.json?_shape=objects', + '/test_tables/%group2%table2.json?_shape=objects', ) assert [{ 'identity': 'This is particle: 6', @@ -193,7 +193,7 @@ def test_table_shape_objects(app_client): def test_table_shape_array(app_client): response = app_client.get( - '/test_tables/%2Fgroup2%2Ftable2.json?_shape=array', + '/test_tables/%group2%table2.json?_shape=array', ) assert [{ 'identity': 'This is particle: 6', @@ -207,7 +207,7 @@ def test_table_shape_array(app_client): def test_table_shape_invalid(app_client): response = app_client.get( - '/test_tables/%2Fgroup2%2Ftable2.json?_shape=invalid', + '/test_tables/%group2%table2.json?_shape=invalid', ) assert { 'ok': False, @@ -217,10 +217,10 @@ def test_table_shape_invalid(app_client): } == 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), - ('/test_tables/%2Fgroup2%2Fmulti.json?_size=5', 10, 2), + ('/test_tables/%array1.json', 2, 1), + ('/test_tables/%array1.json?_size=1', 2, 2), + ('/test_tables/%group1%array2.json?_size=1000', 10000, 10), + ('/test_tables/%group2%multi.json?_size=5', 10, 2), ]) def test_paginate_tables_and_arrays(app_client, path, expected_rows, expected_pages): fetched = [] @@ -232,6 +232,7 @@ def test_paginate_tables_and_arrays(app_client, path, expected_rows, expected_pa fetched.extend(response.json['rows']) path = response.json['next_url'] if path: + path = path.replace('http://localhost', '') assert response.json['next'] assert '_next={}'.format(response.json['next']) in path