]> git.jsancho.org Git - datasette-pytables.git/blobdiff - tests/test_api.py
Paginate with offset argument
[datasette-pytables.git] / tests / test_api.py
index db9e41ca0a20a509895d687c7986271ab7afd4d0..71c926277900aeaea63a1de202886797f2e08a2d 100644 (file)
@@ -3,7 +3,7 @@ import pytest
 from urllib.parse import urlencode
 
 def test_homepage(app_client):
-    _, response = app_client.get('/.json')
+    response = app_client.get('/.json')
     assert response.status == 200
     assert response.json.keys() == {'test_tables': 0}.keys()
     d = response.json['test_tables']
@@ -11,7 +11,7 @@ def test_homepage(app_client):
     assert d['tables_count'] == 5
 
 def test_database_page(app_client):
-    response = app_client.get('/test_tables.json', gather_request=False)
+    response = app_client.get('/test_tables.json')
     data = response.json
     assert 'test_tables' == data['database']
     assert [{
@@ -19,46 +19,46 @@ def test_database_page(app_client):
         'columns': ['value'],
         'primary_keys': [],
         'count': 2,
-        'label_column': None,
         'hidden': False,
         'fts_table': None,
-        'foreign_keys': {'incoming': [], 'outgoing': []}
+        'foreign_keys': {'incoming': [], 'outgoing': []},
+        'private': False,
     }, {
         'name': '/group1/array2',
         'columns': ['value'],
         'primary_keys': [],
         'count': 10000,
-        'label_column': None,
         'hidden': False,
         'fts_table': None,
-        'foreign_keys': {'incoming': [], 'outgoing': []}
+        'foreign_keys': {'incoming': [], 'outgoing': []},
+        'private': False,
     }, {
         'name': '/group1/table1',
         'columns': ['identity', 'idnumber', 'speed'],
         'primary_keys': [],
         'count': 10000,
-        'label_column': None,
         'hidden': False,
         'fts_table': None,
-        'foreign_keys': {'incoming': [], 'outgoing': []}
+        'foreign_keys': {'incoming': [], 'outgoing': []},
+        'private': False,
     }, {
         'name': '/group2/multi',
         'columns': ['value'],
         'primary_keys': [],
         'count': 10,
-        'label_column': None,
         'hidden': False,
         'fts_table': None,
-        'foreign_keys': {'incoming': [], 'outgoing': []}
+        'foreign_keys': {'incoming': [], 'outgoing': []},
+        'private': False,
     }, {
         'name': '/group2/table2',
         'columns': ['identity', 'idnumber', 'speed'],
         'primary_keys': [],
         'count': 10000,
-        'label_column': None,
         'hidden': False,
         'fts_table': None,
-        'foreign_keys': {'incoming': [], 'outgoing': []}
+        'foreign_keys': {'incoming': [], 'outgoing': []},
+        'private': False,
     }] == data['tables']
 
 def test_custom_sql(app_client):
@@ -67,7 +67,6 @@ def test_custom_sql(app_client):
             'sql': 'select identity from [/group1/table1]',
             '_shape': 'objects'
         }),
-        gather_request=False
     )
     data = response.json
     assert {
@@ -89,21 +88,20 @@ 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',
-            '_shape': 'objects'
+            '_shape': 'objects',
         }),
-        gather_request=False
     )
     data = response.json
     assert {
         'sql': 'select identity from [/group1/table1] where speed > 100 and idnumber < 55',
-        'params': {}
+        'params': {},
     } == data['query']
     assert 4 == len(data['rows'])
     assert [
         {'identity': 'This is particle: 51'},
         {'identity': 'This is particle: 52'},
         {'identity': 'This is particle: 53'},
-        {'identity': 'This is particle: 54'}
+        {'identity': 'This is particle: 54'},
     ] == data['rows']
     assert ['identity'] == data['columns']
     assert 'test_tables' == data['database']
@@ -113,20 +111,19 @@ 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)',
-            '_shape': 'objects'
-            }),
-        gather_request=False
+            '_shape': 'objects',
+        }),
     )
     data = response.json
     assert {
         'sql': 'select identity from [/group1/table1] where (speed > 100) & (speed < 500)',
-        'params': {}
+        'params': {},
     } == data['query']
     assert 199 == len(data['rows'])
     assert [
         {'identity': 'This is particle: 51'},
         {'identity': 'This is particle: 52'},
-        {'identity': 'This is particle: 53'}
+        {'identity': 'This is particle: 53'},
     ] == data['rows'][:3]
     assert ['identity'] == data['columns']
     assert 'test_tables' == data['database']
@@ -135,7 +132,6 @@ def test_custom_pytables_sql(app_client):
 def test_invalid_custom_sql(app_client):
     response = app_client.get(
         '/test_tables.json?sql=.schema',
-        gather_request=False
     )
     assert response.status == 400
     assert response.json['ok'] is False
@@ -144,23 +140,19 @@ def test_invalid_custom_sql(app_client):
 def test_table_json(app_client):
     response = app_client.get(
         '/test_tables/%2Fgroup2%2Ftable2.json?_shape=objects',
-        gather_request=False
     )
     assert response.status == 200
     data = response.json
-    assert data['query']['sql'] == 'select rowid, * from [/group2/table2] order by rowid limit 51'
+    assert data['query']['sql'] == 'select identity, idnumber, speed from [/group2/table2] limit 51'
     assert data['rows'][3:6] == [{
-        'rowid': 3,
         'identity': 'This is particle:  3',
         'idnumber': 3,
         'speed': 6.0
     }, {
-        'rowid': 4,
         'identity': 'This is particle:  4',
         'idnumber': 4,
         'speed': 8.0
     }, {
-        'rowid': 5,
         'identity': 'This is particle:  5',
         'idnumber': 5,
         'speed': 10.0
@@ -173,31 +165,27 @@ def test_table_not_exists_json(app_client):
         'status': 404,
         'title': None,
     } == app_client.get(
-        '/test_tables/blah.json', gather_request=False
+        '/test_tables/blah.json',
     ).json
 
 def test_table_shape_arrays(app_client):
     response = app_client.get(
         '/test_tables/%2Fgroup2%2Ftable2.json?_shape=arrays',
-        gather_request=False
     )
     assert [
-        [6, 'This is particle:  6', 6, 12.0],
-        [7, 'This is particle:  7', 7, 14.0],
+        ['This is particle:  6', 6, 12.0],
+        ['This is particle:  7', 7, 14.0],
     ] == response.json['rows'][6:8]
 
 def test_table_shape_objects(app_client):
     response = app_client.get(
         '/test_tables/%2Fgroup2%2Ftable2.json?_shape=objects',
-        gather_request=False
     )
     assert [{
-        'rowid': 6,
         'identity': 'This is particle:  6',
         'idnumber': 6,
         'speed': 12.0,
     }, {
-        'rowid': 7,
         'identity': 'This is particle:  7',
         'idnumber': 7,
         'speed': 14.0,
@@ -206,15 +194,12 @@ 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',
-        gather_request=False
     )
     assert [{
-        'rowid': 6,
         'identity': 'This is particle:  6',
         'idnumber': 6,
         'speed': 12.0,
     }, {
-        'rowid': 7,
         'identity': 'This is particle:  7',
         'idnumber': 7,
         'speed': 14.0,
@@ -223,7 +208,6 @@ 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',
-        gather_request=False
     )
     assert {
         'ok': False,
@@ -242,13 +226,13 @@ def test_paginate_tables_and_arrays(app_client, path, expected_rows, expected_pa
     fetched = []
     count = 0
     while path:
-        response = app_client.get(path, gather_request=False)
-        print("*****", response.json)
+        response = app_client.get(path)
         assert 200 == response.status
         count += 1
         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