diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-11-16 18:58:34 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-11-16 18:58:34 +0000 |
| commit | 58fdd1e948b7223cbcaf4fdceb159de200356d79 (patch) | |
| tree | 162985896bd8ff3e88069029caf55ed5b5e0ec1b /repoze/bfg/tests/test_registry.py | |
| parent | 131f5f3046eb71145ebeb2a05b90bd89ec829dd9 (diff) | |
| download | pyramid-58fdd1e948b7223cbcaf4fdceb159de200356d79.tar.gz pyramid-58fdd1e948b7223cbcaf4fdceb159de200356d79.tar.bz2 pyramid-58fdd1e948b7223cbcaf4fdceb159de200356d79.zip | |
Merge imperativeconfig branch.
Diffstat (limited to 'repoze/bfg/tests/test_registry.py')
| -rw-r--r-- | repoze/bfg/tests/test_registry.py | 120 |
1 files changed, 120 insertions, 0 deletions
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)) |
