From 58fdd1e948b7223cbcaf4fdceb159de200356d79 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Mon, 16 Nov 2009 18:58:34 +0000 Subject: Merge imperativeconfig branch. --- repoze/bfg/tests/test_registry.py | 120 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) (limited to 'repoze/bfg/tests/test_registry.py') diff --git a/repoze/bfg/tests/test_registry.py b/repoze/bfg/tests/test_registry.py index 57e8134c9..3eada7b1c 100644 --- a/repoze/bfg/tests/test_registry.py +++ b/repoze/bfg/tests/test_registry.py @@ -1,4 +1,5 @@ import unittest +from repoze.bfg.testing import cleanUp class TestRegistry(unittest.TestCase): def _getTargetClass(self): @@ -37,3 +38,122 @@ class TestRegistry(unittest.TestCase): registry.registerSubscriptionAdapter(EventHandler, [IFoo], Interface) self.assertEqual(registry.has_listeners, True) + def test__override_not_yet_registered(self): + from repoze.bfg.interfaces import IPackageOverrides + package = DummyPackage('package') + opackage = DummyPackage('opackage') + registry = self._makeOne() + registry._override(package, 'path', opackage, 'oprefix', + PackageOverrides=DummyOverrides) + overrides = registry.queryUtility(IPackageOverrides, name='package') + self.assertEqual(overrides.inserted, [('path', 'opackage', 'oprefix')]) + self.assertEqual(overrides.package, package) + + def test__override_already_registered(self): + from repoze.bfg.interfaces import IPackageOverrides + package = DummyPackage('package') + opackage = DummyPackage('opackage') + overrides = DummyOverrides(package) + registry = self._makeOne() + registry.registerUtility(overrides, IPackageOverrides, name='package') + registry._override(package, 'path', opackage, 'oprefix', + PackageOverrides=DummyOverrides) + self.assertEqual(overrides.inserted, [('path', 'opackage', 'oprefix')]) + self.assertEqual(overrides.package, package) + +class TestBFGViewGrokker(unittest.TestCase): + def setUp(self): + cleanUp() + + def tearDown(self): + cleanUp() + + def _getTargetClass(self): + from repoze.bfg.registry import BFGViewGrokker + return BFGViewGrokker + + def _makeOne(self, *arg, **kw): + return self._getTargetClass()(*arg, **kw) + + def test_grok_is_bfg_view(self): + from zope.component import getSiteManager + from repoze.bfg.interfaces import IRequest + from repoze.bfg.interfaces import IView + from zope.interface import Interface + grokker = self._makeOne() + class obj: + def __init__(self, context, request): + pass + def __call__(self): + return 'OK' + settings = dict(permission='foo', for_=Interface, name='foo.html', + request_type=IRequest, route_name=None, + request_method=None, request_param=None, + containment=None, attr=None, renderer=None, + wrapper=None, xhr=False, header=None, + accept=None) + obj.__bfg_view_settings__ = [settings] + sm = getSiteManager() + result = grokker.grok('name', obj, _info='', _registry=sm) + self.assertEqual(result, True) + wrapped = sm.adapters.lookup((Interface, IRequest), IView, + name='foo.html') + self.assertEqual(wrapped(None, None), 'OK') + + def test_grok_is_not_bfg_view(self): + grokker = self._makeOne() + class obj: + pass + context = DummyContext() + result = grokker.grok('name', obj, context=context) + self.assertEqual(result, False) + actions = context.actions + self.assertEqual(len(actions), 0) + +class TestDefaultRootFactory(unittest.TestCase): + def _getTargetClass(self): + from repoze.bfg.registry import DefaultRootFactory + return DefaultRootFactory + + def _makeOne(self, environ): + return self._getTargetClass()(environ) + + def test_no_matchdict(self): + environ = {} + root = self._makeOne(environ) + self.assertEqual(root.__parent__, None) + self.assertEqual(root.__name__, None) + + def test_matchdict(self): + class DummyRequest: + pass + request = DummyRequest() + request.matchdict = {'a':1, 'b':2} + root = self._makeOne(request) + self.assertEqual(root.a, 1) + self.assertEqual(root.b, 2) + + +class DummyModule: + __path__ = "foo" + __name__ = "dummy" + __file__ = '' + + +class DummyContext: + def __init__(self, resolved=DummyModule): + self.actions = [] + self.info = None + self.resolved = resolved + +class DummyPackage: + def __init__(self, name): + self.__name__ = name + +class DummyOverrides: + def __init__(self, package): + self.package = package + self.inserted = [] + + def insert(self, path, package, prefix): + self.inserted.append((path, package, prefix)) -- cgit v1.2.3