diff options
Diffstat (limited to 'tests/test_threadlocal.py')
| -rw-r--r-- | tests/test_threadlocal.py | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/tests/test_threadlocal.py b/tests/test_threadlocal.py new file mode 100644 index 000000000..088156507 --- /dev/null +++ b/tests/test_threadlocal.py @@ -0,0 +1,95 @@ +from pyramid import testing +import unittest + +class TestThreadLocalManager(unittest.TestCase): + def setUp(self): + testing.setUp() + + def tearDown(self): + testing.tearDown() + + def _getTargetClass(self): + from pyramid.threadlocal import ThreadLocalManager + return ThreadLocalManager + + def _makeOne(self, default=lambda *x: 1): + return self._getTargetClass()(default) + + def test_init(self): + local = self._makeOne() + self.assertEqual(local.stack, []) + self.assertEqual(local.get(), 1) + + def test_default(self): + def thedefault(): + return '123' + local = self._makeOne(thedefault) + self.assertEqual(local.stack, []) + self.assertEqual(local.get(), '123') + + def test_push_and_pop(self): + local = self._makeOne() + local.push(True) + self.assertEqual(local.get(), True) + self.assertEqual(local.pop(), True) + self.assertEqual(local.pop(), None) + self.assertEqual(local.get(), 1) + + def test_set_get_and_clear(self): + local = self._makeOne() + local.set(None) + self.assertEqual(local.stack, [None]) + self.assertEqual(local.get(), None) + local.clear() + self.assertEqual(local.get(), 1) + local.clear() + self.assertEqual(local.get(), 1) + + +class TestGetCurrentRequest(unittest.TestCase): + def _callFUT(self): + from pyramid.threadlocal import get_current_request + return get_current_request() + + def test_it_None(self): + request = self._callFUT() + self.assertEqual(request, None) + + def test_it(self): + from pyramid.threadlocal import manager + request = object() + try: + manager.push({'request':request}) + self.assertEqual(self._callFUT(), request) + finally: + manager.pop() + self.assertEqual(self._callFUT(), None) + +class GetCurrentRegistryTests(unittest.TestCase): + def setUp(self): + testing.setUp() + + def tearDown(self): + testing.tearDown() + + def _callFUT(self): + from pyramid.threadlocal import get_current_registry + return get_current_registry() + + def test_it(self): + from pyramid.threadlocal import manager + try: + manager.push({'registry':123}) + self.assertEqual(self._callFUT(), 123) + finally: + manager.pop() + +class GetCurrentRegistryWithoutTestingRegistry(unittest.TestCase): + def _callFUT(self): + from pyramid.threadlocal import get_current_registry + return get_current_registry() + + def test_it(self): + from pyramid.registry import global_registry + self.assertEqual(self._callFUT(), global_registry) + |
