From 0f81dbe52ce2b0adac9c686f82a4cd60b60cf26d Mon Sep 17 00:00:00 2001 From: Friedrich Lindenberg Date: Mon, 1 Apr 2013 22:03:01 +0200 Subject: [PATCH] More unit tests for table. --- dataset/persistence/table.py | 14 +++--- test.py | 93 ------------------------------------ test/test_persistence.py | 43 +++++++++++++++++ 3 files changed, 50 insertions(+), 100 deletions(-) delete mode 100644 test.py diff --git a/dataset/persistence/table.py b/dataset/persistence/table.py index bc017e9..0672396 100644 --- a/dataset/persistence/table.py +++ b/dataset/persistence/table.py @@ -53,7 +53,8 @@ class Table(object): def delete(self, **kw): q = self._args_to_clause(kw) - self.database.engine.execute(q) + stmt = self.table.delete(q) + self.database.engine.execute(stmt) def _ensure_columns(self, row, types={}): for column in set(row.keys()) - set(self.table.columns.keys()): @@ -66,7 +67,7 @@ class Table(object): self.create_column(column, _type) def _args_to_clause(self, args): - self._ensure_columns(kw) + self._ensure_columns(args) clauses = [] for k, v in args.items(): clauses.append(self.table.c[k] == v) @@ -95,16 +96,15 @@ class Table(object): self.indexes[name] = idx return idx - def find_one(**kw): - res = list(self.find(self.database.engine, - self.table, _limit=1, **kw)) + def find_one(self, **kw): + res = list(self.find(_limit=1, **kw)) if not len(res): return None return res[0] - def find(engine, _limit=None, _step=5000, _offset=0, + def find(self, _limit=None, _step=5000, _offset=0, order_by='id', **kw): - order_by = [table.c[order_by].asc()] + order_by = [self.table.c[order_by].asc()] args = self._args_to_clause(kw) for i in count(): diff --git a/test.py b/test.py deleted file mode 100644 index 24af6a4..0000000 --- a/test.py +++ /dev/null @@ -1,93 +0,0 @@ -import unittest -from datetime import datetime - -from dataset import * - -TEST_DATA = [ - { - 'date': datetime(2011, 01, 01), - 'temperature': 1, - 'place': 'Galway' - }, - { - 'date': datetime(2011, 01, 02), - 'temperature': -1, - 'place': 'Galway' - }, - { - 'date': datetime(2011, 01, 03), - 'temperature': 0, - 'place': 'Galway' - }, - { - 'date': datetime(2011, 01, 01), - 'temperature': 6, - 'place': 'Berkeley' - }, - { - 'date': datetime(2011, 01, 02), - 'temperature': 8, - 'place': 'Berkeley' - }, - { - 'date': datetime(2011, 01, 03), - 'temperature': 5, - 'place': 'Berkeley' - } -] - - -class TableTestCase(unittest.TestCase): - - def setUp(self): - self.engine = connect('sqlite:///:memory:') - - def test_create_table(self): - table = create_table(self.engine, 'foo') - assert table.exists() - assert len(table.columns) == 1, table.columns - - -class QueryTestCase(unittest.TestCase): - - def setUp(self): - self.engine = connect('sqlite:///:memory:') - self.table = create_table(self.engine, 'weather') - for entry in TEST_DATA: - upsert(self.engine, self.table, entry, ['place', 'date'], - ensure=True) - - def test_all(self): - x = list(all(self.engine, self.table)) - assert len(x) == len(TEST_DATA), len(x) - - def test_distinct(self): - x = list(distinct(self.engine, self.table, 'place')) - assert len(x) == 2, x - p = [i['place'] for i in x] - assert 'Berkeley' in p, p - assert 'Galway' in p, p - - -class ObjectAPITestCase(unittest.TestCase): - - def setUp(self): - db = create('sqlite:///:memory:') - self.table = db.get_table('weather2') - for entry in TEST_DATA: - self.table.upsert(entry, ['place', 'date'], ensure=True) - - def test_all(self): - x = list(self.table.all()) - assert len(x) == len(TEST_DATA), len(x) - - def test_distinct(self): - x = list(self.table.distinct('place')) - assert len(x) == 2, x - p = [i['place'] for i in x] - assert 'Berkeley' in p, p - assert 'Galway' in p, p - - -if __name__ == '__main__': - unittest.main() diff --git a/test/test_persistence.py b/test/test_persistence.py index 88405fd..1dc1c01 100644 --- a/test/test_persistence.py +++ b/test/test_persistence.py @@ -44,6 +44,49 @@ class TableTestCase(unittest.TestCase): ) assert len(self.tbl)==len(TEST_DATA)+1, len(self.tbl) + def test_upsert(self): + self.tbl.upsert({ + 'date': datetime(2011, 01, 02), + 'temperature': -10, + 'place': 'Berlin'}, + ['place'] + ) + assert len(self.tbl)==len(TEST_DATA)+1, len(self.tbl) + self.tbl.upsert({ + 'date': datetime(2011, 01, 02), + 'temperature': -10, + 'place': 'Berlin'}, + ['place'] + ) + assert len(self.tbl)==len(TEST_DATA)+1, len(self.tbl) + + def test_delete(self): + self.tbl.insert({ + 'date': datetime(2011, 01, 02), + 'temperature': -10, + 'place': 'Berlin'} + ) + assert len(self.tbl)==len(TEST_DATA)+1, len(self.tbl) + self.tbl.delete(place='Berlin') + assert len(self.tbl)==len(TEST_DATA), len(self.tbl) + + def test_find_one(self): + self.tbl.insert({ + 'date': datetime(2011, 01, 02), + 'temperature': -10, + 'place': 'Berlin'} + ) + d = self.tbl.find_one(place='Berlin') + assert d['temperature']==-10, d + d = self.tbl.find_one(place='Atlantis') + assert d is None, d + + def test_find(self): + ds = list(self.tbl.find(place='Berkeley')) + assert len(ds)==3, ds + ds = list(self.tbl.find(place='Berkeley', _limit=2)) + assert len(ds)==2, ds + def test_distinct(self): x = list(self.tbl.distinct('place')) assert len(x)==2, x