--- a/tests/dbtestcase.py Mon Feb 06 12:32:14 2012 +0100
+++ b/tests/dbtestcase.py Mon Feb 06 14:39:33 2012 +0100
@@ -1,13 +1,22 @@
import unittest
+from sqlalchemy import create_engine, pool
+from tempfile import mkdtemp
+import shutil
+
+from ngdatabase.mysql import Server, createConfig, Database
+
from iro.model import schema
from iro.model.utils import WithSession
+from iro.model.schema import Base
+
+from iro.controller.pool import dbPool
class DBTestCase(unittest.TestCase):
'''a TestCase with DB connection
you have to set self.session manually in setUp'''
def __init__(self,*args,**kwargs):
- self.engine=None
+ self.engine = md.engine
unittest.TestCase.__init__(self,*args,**kwargs)
def tearDown(self):
@@ -22,3 +31,38 @@
with self.session() as session:
for table in schema.__tables__:
session.query(getattr(schema,table)).delete()
+
+class SampleDatabase(Database):
+ def createPassword(self):
+ self.password="test"
+ return self.password
+
+class ModuleData:
+ def __init__(self):
+ self.tdir = mkdtemp(prefix='iro-mysql-')
+ self.server = Server('%s/my.cnf'%self.tdir)
+ self.db = SampleDatabase("test","test",'%s/my.cnf'%self.tdir)
+ self.engine = create_engine('mysql://test:test@localhost/test?unix_socket=%s/socket'%self.tdir,
+ poolclass = pool.SingletonThreadPool, pool_size=dbPool.maxthreads, )#echo=True)
+
+ def setUp(self):
+ with open('%s/my.cnf'%self.tdir,'w') as cnf:
+ cnf.write(createConfig(self.tdir))
+ self.server.create()
+ self.server.start()
+ self.db.create()
+ Base.metadata.create_all(self.engine)
+
+ def tearDown(self):
+ self.server.stop()
+ shutil.rmtree(self.tdir)
+
+
+md=ModuleData()
+
+def setUpModule():
+ md.setUp()
+
+def tearDownModule():
+ md.tearDown()
+