More unit tests for table.
This commit is contained in:
parent
57b124365b
commit
0f81dbe52c
@ -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
93
test.py
@ -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()
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user