Cleaned up websetup a little.
[zzz-floof.git] / floof / tests / __init__.py
index d51f6f2..fc14a48 100644 (file)
@@ -16,14 +16,68 @@ from routes.util import URLGenerator
 from webtest import TestApp
 
 import pylons.test
+from elixir import *
+from floof.model import *
+from floof.model import meta
+from floof import model as model
+from sqlalchemy import engine_from_config
+
+__all__ = ['environ', 'url', 'TestController', 'TestModel']
 
-__all__ = ['environ', 'url', 'TestController']
 
 # Invoke websetup with the current config file
-SetupCommand('setup-app').run([config['__file__']])
+# SetupCommand('setup-app').run([config['__file__']])
+
+# additional imports ...
+import os
+from paste.deploy import appconfig
+from floof.config.environment import load_environment
 
+here_dir = os.path.dirname(__file__)
+conf_dir = os.path.dirname(os.path.dirname(here_dir))
+
+test_file = os.path.join(conf_dir, 'test.ini')
+conf = appconfig('config:' + test_file)
+load_environment(conf.global_conf, conf.local_conf)
 environ = {}
 
+engine = engine_from_config(config, 'sqlalchemy.')
+model.init_model(engine)
+metadata = elixir.metadata
+Session = elixir.session = meta.Session
+
+class Individual(Entity):
+    """Table 'Individual'.
+
+    >>> me = Individual('Groucho')
+
+    # 'name' field is converted to lowercase
+    >>> me.name
+    'groucho'
+    """
+    name = Field(String(20), unique=True)
+    favorite_color = Field(String(20))
+
+    def __init__(self, name, favorite_color=None):
+        self.name = str(name).lower()
+        self.favorite_color = favorite_color
+
+setup_all()
+
+def setup():
+    pass
+
+def teardown():
+    pass
+
+class TestModel(TestCase):
+    def setUp(self):
+        setup_all(True)
+
+    def tearDown(self):
+        drop_all(engine)
+
+
 class TestController(TestCase):
 
     def __init__(self, *args, **kwargs):