More unit tests for table.

This commit is contained in:
Friedrich Lindenberg 2013-04-01 22:03:01 +02:00
parent 57b124365b
commit 0f81dbe52c
3 changed files with 50 additions and 100 deletions

View File

@ -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():

93
test.py
View File

@ -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()

View File

@ -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