From 3fd91222c6fb46bc2d5838229d7c54130619d73a Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Sun, 13 Jul 2008 10:21:59 +0000 Subject: Use an application-local component registry. --- repoze/bfg/tests/test_registry.py | 96 +++++++++++++++++++++++++++++++++++++++ repoze/bfg/tests/test_router.py | 10 ++-- 2 files changed, 101 insertions(+), 5 deletions(-) create mode 100644 repoze/bfg/tests/test_registry.py (limited to 'repoze/bfg/tests') diff --git a/repoze/bfg/tests/test_registry.py b/repoze/bfg/tests/test_registry.py new file mode 100644 index 000000000..11770824a --- /dev/null +++ b/repoze/bfg/tests/test_registry.py @@ -0,0 +1,96 @@ +import unittest + +from zope.component.testing import PlacelessSetup + +class TestMakeRegistry(unittest.TestCase, PlacelessSetup): + def setUp(self): + PlacelessSetup.setUp(self) + + def tearDown(self): + PlacelessSetup.tearDown(self) + + def _getFUT(self): + from repoze.bfg.registry import makeRegistry + return makeRegistry + + def test_it(self): + from repoze.bfg.tests import fixtureapp + makeRegistry = self._getFUT() + dummylock = DummyLock() + dummyregmgr = DummyRegistrationManager() + import repoze.bfg.registry + try: + old = repoze.bfg.registry.setRegistryManager(dummyregmgr) + context, registry = makeRegistry('configure.zcml', + fixtureapp, + lock=dummylock) + self.assertEqual(context.package, fixtureapp) + from zope.component.registry import Components + self.failUnless(isinstance(registry, Components)) + self.assertEqual(dummylock.acquired, True) + self.assertEqual(dummylock.released, True) + self.assertEqual(dummyregmgr.registry, registry) + finally: + repoze.bfg.registry.setRegistryManager(old) + +class TestThreadLocalRegistryManager(unittest.TestCase, PlacelessSetup): + def setUp(self): + PlacelessSetup.setUp(self) + + def tearDown(self): + PlacelessSetup.tearDown(self) + + def _getTargetClass(self): + from repoze.bfg.registry import ThreadLocalRegistryManager + return ThreadLocalRegistryManager + + def _makeOne(self): + return self._getTargetClass()() + + def test_init(self): + local = self._makeOne() + from zope.component import getGlobalSiteManager + self.assertEqual(local.registry, getGlobalSiteManager()) + + def test_set_get_and_clear(self): + local = self._makeOne() + from zope.component import getGlobalSiteManager + local.set(None) + self.failIfEqual(local.registry, getGlobalSiteManager()) + self.assertEqual(local.get(), None) + local.clear() + self.assertEqual(local.registry, getGlobalSiteManager()) + +class GetSiteManagerTests(unittest.TestCase): + def _getFUT(self): + from repoze.bfg.registry import getSiteManager + return getSiteManager + + def test_no_context(self): + gsm = self._getFUT() + from zope.component import getGlobalSiteManager + self.assertEqual(gsm(), getGlobalSiteManager()) + + def test_with_context(self): + gsm = self._getFUT() + from zope.component.interfaces import ComponentLookupError + self.assertRaises(ComponentLookupError, gsm, object) + +class DummyRegistrationManager: + registry = None + def set(self, registry): + self.registry = registry + + def get(self): + return self.registry + + def clear(self): + self.cleared = True + +class DummyLock: + def acquire(self): + self.acquired = True + + def release(self): + self.released = True + diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py index 1f884acb6..ca3cf5ade 100644 --- a/repoze/bfg/tests/test_router.py +++ b/repoze/bfg/tests/test_router.py @@ -52,7 +52,7 @@ class RouterTests(unittest.TestCase, PlacelessSetup): traversalfactory = make_traversal_factory(context, '', []) self._registerTraverserFactory(traversalfactory, '', None, None) app_context = make_appcontext() - router = self._makeOne(rootpolicy, app_context) + router = self._makeOne(rootpolicy, app_context, None) start_response = DummyStartResponse() result = router(environ, start_response) headers = start_response.headers @@ -73,7 +73,7 @@ class RouterTests(unittest.TestCase, PlacelessSetup): self._registerViewFactory(viewfactory, '', None, None) self._registerWSGIFactory(wsgifactory, '', None, None, None) app_context = make_appcontext() - router = self._makeOne(rootpolicy, app_context) + router = self._makeOne(rootpolicy, app_context, None) start_response = DummyStartResponse() result = router(environ, start_response) self.assertEqual(result, ['Hello world']) @@ -95,7 +95,7 @@ class RouterTests(unittest.TestCase, PlacelessSetup): self._registerViewFactory(viewfactory, 'foo', None, None) self._registerWSGIFactory(wsgifactory, '', None, None, None) app_context = make_appcontext() - router = self._makeOne(rootpolicy, app_context) + router = self._makeOne(rootpolicy, app_context, None) start_response = DummyStartResponse() result = router(environ, start_response) self.assertEqual(result, ['Hello world']) @@ -123,7 +123,7 @@ class RouterTests(unittest.TestCase, PlacelessSetup): self._registerViewFactory(viewfactory, '', IContext, IRequest) self._registerWSGIFactory(wsgifactory, '', None, None, None) app_context = make_appcontext() - router = self._makeOne(rootpolicy, app_context) + router = self._makeOne(rootpolicy, app_context, None) start_response = DummyStartResponse() result = router(environ, start_response) self.assertEqual(result, ['Hello world']) @@ -153,7 +153,7 @@ class RouterTests(unittest.TestCase, PlacelessSetup): self._registerViewFactory(viewfactory, '', IContext, IRequest) self._registerWSGIFactory(wsgifactory, '', None, None, None) app_context = make_appcontext() - router = self._makeOne(rootpolicy, app_context) + router = self._makeOne(rootpolicy, app_context, None) start_response = DummyStartResponse() result = router(environ, start_response) self.failUnless('404' in result[0]) -- cgit v1.2.3