fixed import_from_csv_field and new tests, thanks Jonathan
This commit is contained in:
@@ -13,6 +13,7 @@ else:
|
||||
|
||||
import unittest
|
||||
import datetime
|
||||
import cStringIO
|
||||
from dal import DAL, Field, Table, SQLALL
|
||||
|
||||
ALLOWED_DATATYPES = [
|
||||
@@ -483,6 +484,52 @@ class TestVirtualFields(unittest.TestCase):
|
||||
db.t.drop()
|
||||
db.commit()
|
||||
|
||||
class TestImportExportFields(unittest.TestCase):
|
||||
|
||||
def testRun(self):
|
||||
db = DAL('sqlite:memory:')
|
||||
db.define_table('person', Field('name'))
|
||||
db.define_table('pet',Field('friend',db.person),Field('name'))
|
||||
for n in range(2):
|
||||
db(db.pet).delete()
|
||||
db(db.person).delete()
|
||||
for k in range(10):
|
||||
id = db.person.insert(name=str(k))
|
||||
db.pet.insert(friend=id,name=str(k))
|
||||
db.commit()
|
||||
stream = cStringIO.StringIO()
|
||||
db.export_to_csv_file(stream)
|
||||
db(db.pet).delete()
|
||||
db(db.person).delete()
|
||||
stream = cStringIO.StringIO(stream.getvalue())
|
||||
db.import_from_csv_file(stream)
|
||||
assert db(db.person.id==db.pet.friend)(db.person.name==db.pet.name).count()==10
|
||||
db.pet.drop()
|
||||
db.person.drop()
|
||||
db.commit()
|
||||
|
||||
class TestImportExportUuidFields(unittest.TestCase):
|
||||
|
||||
def testRun(self):
|
||||
db = DAL('sqlite:memory:')
|
||||
db.define_table('person', Field('name'),Field('uuid'))
|
||||
db.define_table('pet',Field('friend',db.person),Field('name'))
|
||||
for n in range(2):
|
||||
db(db.pet).delete()
|
||||
db(db.person).delete()
|
||||
for k in range(10):
|
||||
id = db.person.insert(name=str(k),uuid=str(k))
|
||||
db.pet.insert(friend=id,name=str(k))
|
||||
db.commit()
|
||||
stream = cStringIO.StringIO()
|
||||
db.export_to_csv_file(stream)
|
||||
stream = cStringIO.StringIO(stream.getvalue())
|
||||
db.import_from_csv_file(stream)
|
||||
assert db(db.person).count()==10
|
||||
assert db(db.person.id==db.pet.friend)(db.person.name==db.pet.name).count()==20
|
||||
db.pet.drop()
|
||||
db.person.drop()
|
||||
db.commit()
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user