summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_scripting.py
diff options
context:
space:
mode:
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)
+