X-Git-Url: https://git.jsancho.org/?p=datasette-pytables.git;a=blobdiff_plain;f=tests%2Ftest_api.py;h=5d0bfdcc212c0d432bdf6d0982d6b99e1bdc7a69;hp=39c41228019dfbebb53c84803dc7ffa05d29ebb9;hb=ca01a7a7a6320ba50a2374fab68d69dc5aacec4e;hpb=b3ecaa0810240531236a9b89d74d0c6b07346f83 diff --git a/tests/test_api.py b/tests/test_api.py index 39c4122..5d0bfdc 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -10,7 +10,7 @@ def test_homepage(app_client): assert response.json.keys() == {'test_tables': 0}.keys() d = response.json['test_tables'] assert d['name'] == 'test_tables' - assert d['tables_count'] == 4 + assert d['tables_count'] == 5 def test_database_page(app_client): response = app_client.get('/test_tables.json', gather_request=False) @@ -18,7 +18,7 @@ def test_database_page(app_client): assert 'test_tables' == data['database'] assert [{ 'name': '/array1', - 'columns': [], + 'columns': ['value'], 'primary_keys': [], 'count': 2, 'label_column': None, @@ -27,7 +27,7 @@ def test_database_page(app_client): 'foreign_keys': {'incoming': [], 'outgoing': []} }, { 'name': '/group1/array2', - 'columns': [], + 'columns': ['value'], 'primary_keys': [], 'count': 10000, 'label_column': None, @@ -43,6 +43,15 @@ def test_database_page(app_client): 'hidden': False, 'fts_table': None, 'foreign_keys': {'incoming': [], 'outgoing': []} + }, { + 'name': '/group2/multi', + 'columns': ['value'], + 'primary_keys': [], + 'count': 10, + 'label_column': None, + 'hidden': False, + 'fts_table': None, + 'foreign_keys': {'incoming': [], 'outgoing': []} }, { 'name': '/group2/table2', 'columns': ['identity', 'idnumber', 'speed'], @@ -55,6 +64,30 @@ def test_database_page(app_client): }] == data['tables'] def test_custom_sql(app_client): + response = app_client.get( + '/test_tables.json?' + urlencode({ + 'sql': 'select identity from [/group1/table1]', + '_shape': 'objects' + }), + gather_request=False + ) + data = response.json + assert { + 'sql': 'select identity from [/group1/table1]', + 'params': {} + } == data['query'] + assert 1000 == len(data['rows']) + assert [ + {'identity': 'This is particle: 0'}, + {'identity': 'This is particle: 1'}, + {'identity': 'This is particle: 2'}, + {'identity': 'This is particle: 3'} + ] == data['rows'][:4] + assert ['identity'] == data['columns'] + assert 'test_tables' == data['database'] + assert data['truncated'] + +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', @@ -63,7 +96,6 @@ def test_custom_sql(app_client): gather_request=False ) data = response.json - print("*************************", data) assert { 'sql': 'select identity from [/group1/table1] where speed > 100 and idnumber < 55', 'params': {} @@ -77,7 +109,7 @@ def test_custom_sql(app_client): ] == data['rows'] assert ['identity'] == data['columns'] assert 'test_tables' == data['database'] - assert False == data['truncated'] + assert not data['truncated'] def test_custom_pytables_sql(app_client): response = app_client.get( @@ -100,7 +132,7 @@ def test_custom_pytables_sql(app_client): ] == data['rows'][:3] assert ['identity'] == data['columns'] assert 'test_tables' == data['database'] - assert data['truncated'] + assert not data['truncated'] def test_invalid_custom_sql(app_client): response = app_client.get( @@ -206,6 +238,7 @@ def test_table_shape_invalid(app_client): ('/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), ]) def test_paginate_tables_and_arrays(app_client, path, expected_rows, expected_pages): fetched = []