summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_scripting.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-05-28 13:49:18 +0000
committerChris McDonough <chrism@agendaless.com>2009-05-28 13:49:18 +0000
commit82fefc4220a26b37484d2c79db4fdaeb9aebf7e9 (patch)
treef58149ef83b2bd8748751230d6691dc442100d08 /repoze/bfg/tests/test_scripting.py
parent5968cd6ab617d6b25a43cd3bd3866d4a8f635638 (diff)
downloadpyramid-82fefc4220a26b37484d2c79db4fdaeb9aebf7e9.tar.gz
pyramid-82fefc4220a26b37484d2c79db4fdaeb9aebf7e9.tar.bz2
pyramid-82fefc4220a26b37484d2c79db4fdaeb9aebf7e9.zip
- Add a ``get_app`` API functions to the ``paster`` module. This
obtains a WSGI application from a config file given a config file name and a section name. See the ``repoze.bfg.paster`` API docs for more information. - Add a new module named ``scripting``. It contains a ``get_root`` API function, which, provided a Router instance, returns a traversal root object and a "closer". See the ``repoze.bfg.scripting`` API docs for more info.
Diffstat (limited to 'repoze/bfg/tests/test_scripting.py')
-rw-r--r--repoze/bfg/tests/test_scripting.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/repoze/bfg/tests/test_scripting.py b/repoze/bfg/tests/test_scripting.py
new file mode 100644
index 000000000..514b02dca
--- /dev/null
+++ b/repoze/bfg/tests/test_scripting.py
@@ -0,0 +1,56 @@
+import unittest
+
+class TestGetRoot(unittest.TestCase):
+ def _callFUT(self, app, environ=None):
+ from repoze.bfg.paster import get_root
+ return get_root(app, environ)
+
+ def test_it_noenviron(self):
+ app = DummyApp()
+ root, closer = self._callFUT(app)
+ self.assertEqual(len(app.threadlocal_manager.pushed), 1)
+ pushed = app.threadlocal_manager.pushed[0]
+ self.assertEqual(pushed['registry'], dummy_registry)
+ self.assertEqual(pushed['request'], None)
+ self.assertEqual(len(app.threadlocal_manager.popped), 0)
+ closer()
+ self.assertEqual(len(app.threadlocal_manager.popped), 1)
+
+ def test_it_withenviron(self):
+ app = DummyApp()
+ environ = {}
+ root, closer = self._callFUT(app, environ)
+ self.assertEqual(len(app.threadlocal_manager.pushed), 1)
+ pushed = app.threadlocal_manager.pushed[0]
+ self.assertEqual(pushed['registry'], dummy_registry)
+ self.assertEqual(pushed['request'], None)
+ self.assertEqual(len(app.threadlocal_manager.popped), 0)
+ closer()
+ self.assertEqual(len(app.threadlocal_manager.popped), 1)
+
+
+class Dummy:
+ pass
+
+dummy_root = Dummy()
+dummy_registry = Dummy()
+
+class DummyApp:
+ def __init__(self):
+ self.registry = dummy_registry
+ self.threadlocal_manager = DummyThreadLocalManager()
+
+ def root_factory(self, environ):
+ return dummy_root
+
+class DummyThreadLocalManager:
+ def __init__(self):
+ self.pushed = []
+ self.popped = []
+
+ def push(self, item):
+ self.pushed.append(item)
+
+ def pop(self):
+ self.popped.append(True)
+