diff options
| author | Chris McDonough <chrism@agendaless.com> | 2010-01-03 03:39:30 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2010-01-03 03:39:30 +0000 |
| commit | eecdbc34962b00e35d41039af014462cf558acee (patch) | |
| tree | 784bfdf054d6f4846fb1817d1ba7b01792792dcc /repoze/bfg/tests | |
| parent | 1dff935445ff293a7434f074c1f6bb7304174ec2 (diff) | |
| download | pyramid-eecdbc34962b00e35d41039af014462cf558acee.tar.gz pyramid-eecdbc34962b00e35d41039af014462cf558acee.tar.bz2 pyramid-eecdbc34962b00e35d41039af014462cf558acee.zip | |
Features
--------
- The ``Configurator.add_view`` method now accepts an argument named
``context``. This is an alias for the older argument named
``for_``; it is preferred over ``for_``, but ``for_`` will continue
to be supported "forever".
- The ``view`` ZCML directive now accepts an attribute named
``context``. This is an alias for the older attribute named
``for``; it is preferred over ``for``, but ``for`` will continue to
be supported "forever".
- The ``Configurator.add_route`` method now accepts an argument named
``view_context``. This is an alias for the older argument named
``view_for``; it is preferred over ``view_for``, but ``view_for``
will continue to be supported "forever".
- The ``route`` ZCML directive now accepts an attribute named
``view_context``. This is an alias for the older attribute named
``view_for``; it is preferred over ``view_for``, but ``view_for``
will continue to be supported "forever".
Documentation and Paster Templates
----------------------------------
- All uses of the ``Configurator.add_view`` method that used its
``for_`` argument now use the ``context``argument instead.
- All uses of the ``Configurator.add_route`` method that used its
``view_for`` argument now use the ``view_context``argument instead.
- All uses of the ``view`` ZCML directive that used its ``for``
attribute now use the ``context`` attribute instead.
- All uses of the ``route`` ZCML directive that used its ``view_for``
attribute now use the ``view_context`` attribute instead.
Diffstat (limited to 'repoze/bfg/tests')
| -rw-r--r-- | repoze/bfg/tests/test_configuration.py | 43 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_view.py | 10 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_zcml.py | 78 |
3 files changed, 125 insertions, 6 deletions
diff --git a/repoze/bfg/tests/test_configuration.py b/repoze/bfg/tests/test_configuration.py index d8b6aca99..ba306f26b 100644 --- a/repoze/bfg/tests/test_configuration.py +++ b/repoze/bfg/tests/test_configuration.py @@ -492,7 +492,26 @@ class ConfiguratorTests(unittest.TestCase): result = wrapper(None, None) self.assertEqual(result, 'OK') + def test_add_view_context_as_class(self): + from zope.interface import implementedBy + view = lambda *arg: 'OK' + class Foo: + pass + config = self._makeOne() + config.add_view(context=Foo, view=view) + foo = implementedBy(Foo) + wrapper = self._getViewCallable(config, foo) + self.assertEqual(wrapper, view) + + def test_add_view_context_as_iface(self): + view = lambda *arg: 'OK' + config = self._makeOne() + config.add_view(context=IDummy, view=view) + wrapper = self._getViewCallable(config, IDummy) + self.assertEqual(wrapper, view) + def test_add_view_for_as_class(self): + # ``for_`` is older spelling for ``context`` from zope.interface import implementedBy view = lambda *arg: 'OK' class Foo: @@ -504,12 +523,23 @@ class ConfiguratorTests(unittest.TestCase): self.assertEqual(wrapper, view) def test_add_view_for_as_iface(self): + # ``for_`` is older spelling for ``context`` view = lambda *arg: 'OK' config = self._makeOne() config.add_view(for_=IDummy, view=view) wrapper = self._getViewCallable(config, IDummy) self.assertEqual(wrapper, view) + def test_add_view_context_trumps_for(self): + # ``for_`` is older spelling for ``context`` + view = lambda *arg: 'OK' + config = self._makeOne() + class Foo: + pass + config.add_view(context=IDummy, for_=Foo, view=view) + wrapper = self._getViewCallable(config, IDummy) + self.assertEqual(wrapper, view) + def test_add_view_register_secured_view(self): from zope.interface import Interface from repoze.bfg.interfaces import IRequest @@ -1091,6 +1121,17 @@ class ConfiguratorTests(unittest.TestCase): self.assertEqual(wrapper(None, None), 'OK') self._assertRoute(config, 'name', 'path') + def test_add_route_with_view_context(self): + config = self._makeOne() + view = lambda *arg: 'OK' + config.add_route('name', 'path', view=view, view_context=IDummy) + request_type = self._getRouteRequestIface(config, 'name') + wrapper = self._getViewCallable(config, IDummy, request_type) + self.assertEqual(wrapper(None, None), 'OK') + self._assertRoute(config, 'name', 'path') + wrapper = self._getViewCallable(config, IOther, request_type) + self.assertEqual(wrapper, None) + def test_add_route_with_view_for(self): config = self._makeOne() view = lambda *arg: 'OK' @@ -1102,7 +1143,7 @@ class ConfiguratorTests(unittest.TestCase): wrapper = self._getViewCallable(config, IOther, request_type) self.assertEqual(wrapper, None) - def test_add_route_with_view_for_alias(self): + def test_add_route_with_for_(self): config = self._makeOne() view = lambda *arg: 'OK' config.add_route('name', 'path', view=view, for_=IDummy) diff --git a/repoze/bfg/tests/test_view.py b/repoze/bfg/tests/test_view.py index 677c15bc8..94b896893 100644 --- a/repoze/bfg/tests/test_view.py +++ b/repoze/bfg/tests/test_view.py @@ -289,7 +289,7 @@ class TestBFGViewDecorator(unittest.TestCase): decorator = self._makeOne() self.assertEqual(decorator.name, '') self.assertEqual(decorator.request_type, None) - self.assertEqual(decorator.for_, None) + self.assertEqual(decorator.context, None) self.assertEqual(decorator.permission, None) def test_create_nondefaults(self): @@ -297,7 +297,7 @@ class TestBFGViewDecorator(unittest.TestCase): permission='foo') self.assertEqual(decorator.name, None) self.assertEqual(decorator.request_type, None) - self.assertEqual(decorator.for_, None) + self.assertEqual(decorator.context, None) self.assertEqual(decorator.permission, 'foo') def test_call_function(self): @@ -308,7 +308,7 @@ class TestBFGViewDecorator(unittest.TestCase): self.failUnless(wrapped is foo) settings = wrapped.__bfg_view_settings__[0] self.assertEqual(settings['permission'], None) - self.assertEqual(settings['for_'], None) + self.assertEqual(settings['context'], None) self.assertEqual(settings['request_type'], None) def test_call_oldstyle_class(self): @@ -319,7 +319,7 @@ class TestBFGViewDecorator(unittest.TestCase): self.failUnless(wrapped is foo) settings = wrapped.__bfg_view_settings__[0] self.assertEqual(settings['permission'], None) - self.assertEqual(settings['for_'], None) + self.assertEqual(settings['context'], None) self.assertEqual(settings['request_type'], None) def test_call_newstyle_class(self): @@ -330,7 +330,7 @@ class TestBFGViewDecorator(unittest.TestCase): self.failUnless(wrapped is foo) settings = wrapped.__bfg_view_settings__[0] self.assertEqual(settings['permission'], None) - self.assertEqual(settings['for_'], None) + self.assertEqual(settings['context'], None) self.assertEqual(settings['request_type'], None) def test_stacking(self): diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py index b50f841c2..3cbeb05c8 100644 --- a/repoze/bfg/tests/test_zcml.py +++ b/repoze/bfg/tests/test_zcml.py @@ -117,6 +117,27 @@ class TestViewDirective(unittest.TestCase): regview = reg.adapters.lookup((IDummy, IRequest), IView, name='') self.assertEqual(regview(None, None), 'OK') + def test_context_trumps_for(self): + from repoze.bfg.threadlocal import get_current_registry + from repoze.bfg.interfaces import IView + from repoze.bfg.interfaces import IRequest + context = DummyContext() + reg = get_current_registry() + view = lambda *arg: 'OK' + class Foo: + pass + self._callFUT(context, 'repoze.view', for_=Foo, view=view, + context=IDummy) + actions = context.actions + self.assertEqual(len(actions), 1) + discrim = ('view', IDummy, '', None, IView, None, None, None, None, + None, False, None, None, None) + self.assertEqual(actions[0]['discriminator'], discrim) + register = actions[0]['callable'] + register() + regview = reg.adapters.lookup((IDummy, IRequest), IView, name='') + self.assertEqual(regview(None, None), 'OK') + class TestNotFoundDirective(unittest.TestCase): def setUp(self): testing.setUp() @@ -475,6 +496,63 @@ class TestRouteDirective(unittest.TestCase): wrapped = reg.adapters.lookup((Interface, request_type), IView, name='') self.failUnless(wrapped) + def test_with_view_and_view_context(self): + from repoze.bfg.threadlocal import get_current_registry + from repoze.bfg.interfaces import IView + from repoze.bfg.interfaces import IRouteRequest + context = DummyContext() + view = lambda *arg: 'OK' + self._callFUT(context, 'name', 'path', view=view, view_context=IDummy) + actions = context.actions + self.assertEqual(len(actions), 2) + + route_action = actions[0] + route_action['callable']() + route_discriminator = route_action['discriminator'] + self.assertEqual(route_discriminator, + ('route', 'name', False, None, None, None, None,None)) + self._assertRoute('name', 'path') + + view_action = actions[1] + reg = get_current_registry() + request_type = reg.getUtility(IRouteRequest, 'name') + view_discriminator = view_action['discriminator'] + discrim = ('view', IDummy, '', request_type, IView, None, None, None, + 'name', None, False, None, None, None) + self.assertEqual(view_discriminator, discrim) + wrapped = reg.adapters.lookup((IDummy, request_type), IView, name='') + self.failUnless(wrapped) + + def test_with_view_context_trumps_view_for(self): + from repoze.bfg.threadlocal import get_current_registry + from repoze.bfg.interfaces import IView + from repoze.bfg.interfaces import IRouteRequest + context = DummyContext() + view = lambda *arg: 'OK' + class Foo: + pass + self._callFUT(context, 'name', 'path', view=view, view_context=IDummy, + view_for=Foo) + actions = context.actions + self.assertEqual(len(actions), 2) + + route_action = actions[0] + route_action['callable']() + route_discriminator = route_action['discriminator'] + self.assertEqual(route_discriminator, + ('route', 'name', False, None, None, None, None,None)) + self._assertRoute('name', 'path') + + view_action = actions[1] + reg = get_current_registry() + request_type = reg.getUtility(IRouteRequest, 'name') + view_discriminator = view_action['discriminator'] + discrim = ('view', IDummy, '', request_type, IView, None, None, None, + 'name', None, False, None, None, None) + self.assertEqual(view_discriminator, discrim) + wrapped = reg.adapters.lookup((IDummy, request_type), IView, name='') + self.failUnless(wrapped) + def test_with_dotted_renderer(self): from repoze.bfg.threadlocal import get_current_registry |
