]> git.jsancho.org Git - datasette-connectors.git/blobdiff - tests/dummy.py
Some tests
[datasette-connectors.git] / tests / dummy.py
diff --git a/tests/dummy.py b/tests/dummy.py
new file mode 100644 (file)
index 0000000..b4ae1c0
--- /dev/null
@@ -0,0 +1,90 @@
+from datasette_connectors.row import Row
+
+
+_connector_type = 'dummy'
+
+def inspect(path):
+    tables = {}
+    views = []
+
+    for table in ['table1', 'table2']:
+        tables[table] = {
+            'name': table,
+            'columns': ['c1', 'c2', 'c3'],
+            'primary_keys': [],
+            'count': 2,
+            'label_column': None,
+            'hidden': False,
+            'fts_table': None,
+            'foreign_keys': {'incoming': [], 'outgoing': []},
+        }
+
+    return tables, views, _connector_type
+
+
+class Connection:
+    def __init__(self, path):
+        self.path = path
+
+    def execute(self, sql, params=None, truncate=False, page_size=None, max_returned_rows=None):
+        sql = sql.strip()
+
+        rows = []
+        truncated = False
+        description = []
+
+        if sql == 'select c1 from table1':
+            rows = [
+                Row({'c1': 10}),
+                Row({'c1': 20})
+            ]
+            description = (('c1',),)
+        elif sql == 'select rowid, * from table2 order by rowid limit 51':
+            rows = [
+                Row({'rowid': 1, 'c1': 100, 'c2': 120, 'c3': 130}),
+                Row({'rowid': 2, 'c1': 200, 'c2': 220, 'c3': 230})
+            ]
+            description = (('rowid',), ('c1',), ('c2',), ('c3',))
+        elif sql == 'select count(*) from table2':
+            rows = [Row({'count(*)': 2})]
+            description = (('count(*)',),)
+        elif sql == """select distinct rowid from table2 
+                        where rowid is not null
+                        limit 31""":
+            rows = [
+                Row({'rowid': 1}),
+                Row({'rowid': 2})
+            ]
+            description = (('rowid',),)
+        elif sql == """select distinct c1 from table2 
+                        where c1 is not null
+                        limit 31""":
+            rows = [
+                Row({'c1': 100}),
+                Row({'c1': 200})
+            ]
+            description = (('c1',),)
+        elif sql == """select distinct c2 from table2 
+                        where c2 is not null
+                        limit 31""":
+            rows = [
+                Row({'c2': 120}),
+                Row({'c2': 220})
+            ]
+            description = (('c2',),)
+        elif sql == """select distinct c3 from table2 
+                        where c3 is not null
+                        limit 31""":
+            rows = [
+                Row({'c3': 130}),
+                Row({'c3': 230})
+            ]
+            description = (('c3',),)
+        elif sql == 'select sql from sqlite_master where name = :n and type=:t':
+            if params['t'] != 'view':
+                rows = [Row({'sql': 'CREATE TABLE ' + params['n'] + ' (c1, c2, c3)'})]
+                description = (('sql',),)
+        else:
+            raise Exception("Unexpected query: %s" % sql)
+
+        return rows, truncated, description