From d0b398eeb8ce9e1b13b2c93674e220d804d2de2e Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Fri, 27 Nov 2009 04:46:05 +0000 Subject: - The ``repoze.bfg.testing.setUp`` function now accepts three extra optional keyword arguments: ``registry``, ``request`` and ``hook_zca``. If the ``registry`` argument is not ``None``, the argument will be treated as the registry that is set as the "current registry" (it will be returned by ``repoze.bfg.threadlocal.get_current_registry``) for the duration of the test. If the ``registry`` argument is ``None`` (the default), a new registry is created and used for the duration of the test. The value of the ``request`` argument is used as the "current request" (it will be returned by ``repoze.bfg.threadlocal.get_current_request``) for the duration of the test; it defaults to ``None``. If ``hook_zca`` is ``True`` (the default), the ``zope.component.getSiteManager`` function will be hooked with a function that returns the value of ``registry`` (or the default-created registry if ``registry`` is ``None``) instead of the registry returned by ``zope.component.getGlobalSiteManager``, causing the Zope Component Architecture API (``getSiteManager``, ``getAdapter``, ``getUtility``, and so on) to use the registry we're using for testing instead of the global ZCA registry. - The ``repoze.bfg.testing.tearDown`` function now accepts an ``unhook_zca`` argument. If this argument is ``True`` (the default), ``zope.component.getSiteManager.reset()`` will be called, causing the "base" registry to once again start returnining the result of ``zope.component.getSiteManager``. - Remove hook_zca and unhook_zca methods from Configurator. --- repoze/bfg/tests/test_configuration.py | 38 ++++++++++------------------------ 1 file changed, 11 insertions(+), 27 deletions(-) (limited to 'repoze/bfg/tests/test_configuration.py') diff --git a/repoze/bfg/tests/test_configuration.py b/repoze/bfg/tests/test_configuration.py index ae75494e4..ed84735b4 100644 --- a/repoze/bfg/tests/test_configuration.py +++ b/repoze/bfg/tests/test_configuration.py @@ -134,31 +134,6 @@ class ConfiguratorTests(unittest.TestCase): self.assertEqual(config.registry.getUtility(IRendererFactory, 'yeah'), renderer) - def test_hook_zca(self): - from zope.component import getSiteManager - from repoze.bfg.threadlocal import get_current_registry - try: - getSiteManager.reset() - config = self._makeOne() - config.hook_zca() - hooked = getSiteManager.sethook(None) - self.assertEqual(hooked, get_current_registry) - finally: - getSiteManager.reset() - - def test_unhook_zca(self): - from zope.component import getSiteManager - try: - config = self._makeOne() - reg = object() - hook = lambda *arg: reg - hooked = getSiteManager.sethook(hook) - self.assertEqual(getSiteManager(), reg) - config.unhook_zca() - self.assertNotEqual(getSiteManager(), reg) - finally: - getSiteManager.reset() - def test_add_subscriber_defaults(self): from zope.interface import implements from zope.interface import Interface @@ -2488,14 +2463,17 @@ class TestMakeApp(unittest.TestCase): return make_app(*arg, **kw) def test_it(self): + from repoze.bfg.threadlocal import get_current_registry settings = {'a':1} rootfactory = object() + gsm = DummyGetSiteManager() app = self._callFUT(rootfactory, settings=settings, - Configurator=DummyConfigurator) + Configurator=DummyConfigurator, + getSiteManager=gsm) self.assertEqual(app.root_factory, rootfactory) self.assertEqual(app.settings, settings) self.assertEqual(app.zcml_file, 'configure.zcml') - self.assertEqual(app.zca_hooked, True) + self.assertEqual(gsm.hook, get_current_registry) def test_it_options_means_settings(self): settings = {'a':1} @@ -2633,3 +2611,9 @@ class DummyMultiView: return 'OK1' def __permitted__(self, context, request): """ """ + +class DummyGetSiteManager(object): + def sethook(self, hook): + self.hook = hook + + -- cgit v1.2.3