diff options
| author | Bert JW Regeer <bertjw@regeer.org> | 2015-10-15 22:55:33 -0600 |
|---|---|---|
| committer | Bert JW Regeer <bertjw@regeer.org> | 2015-10-20 23:21:26 -0600 |
| commit | 174bb5e28cccf8cfd61826c2ba384f43a78df00e (patch) | |
| tree | 45c2e91e75513b9c4e914293851a132b7788049c | |
| parent | 7fb6f954f406e99a969c5d4d108ed3e5edb6f9cd (diff) | |
| download | pyramid-174bb5e28cccf8cfd61826c2ba384f43a78df00e.tar.gz pyramid-174bb5e28cccf8cfd61826c2ba384f43a78df00e.tar.bz2 pyramid-174bb5e28cccf8cfd61826c2ba384f43a78df00e.zip | |
Add ViewDerivation integration tests
This is an integration test in the sense that it adds both a view
derivation and then adds a view. That view is then tested to verify that
it correctly returns and that the derivations haven't broken anything.
| -rw-r--r-- | pyramid/tests/test_config/test_derivations.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/pyramid/tests/test_config/test_derivations.py b/pyramid/tests/test_config/test_derivations.py index 1c5432166..f33856e75 100644 --- a/pyramid/tests/test_config/test_derivations.py +++ b/pyramid/tests/test_config/test_derivations.py @@ -10,6 +10,7 @@ class TestDeriveView(unittest.TestCase): def tearDown(self): self.config = None + testing.tearDown() def _makeRequest(self): request = DummyRequest() @@ -1092,6 +1093,7 @@ class TestAddDerivation(unittest.TestCase): def tearDown(self): self.config = None + testing.tearDown() def test_add_single_derivation(self): response = DummyResponse() @@ -1194,6 +1196,59 @@ class TestAddDerivation(unittest.TestCase): result = self.config._derive_view(view) self.assertEqual(response.deriv, ['deriv2', 'deriv3', 'deriv1']) +class TestDerivationIntegration(unittest.TestCase): + def setUp(self): + self.config = testing.setUp() + + def tearDown(self): + self.config = None + testing.tearDown() + + def _getViewCallable(self, config, ctx_iface=None, request_iface=None, + name=''): + from zope.interface import Interface + from pyramid.interfaces import IRequest + from pyramid.interfaces import IView + from pyramid.interfaces import IViewClassifier + from pyramid.interfaces import IExceptionViewClassifier + classifier = IViewClassifier + if ctx_iface is None: + ctx_iface = Interface + if request_iface is None: + request_iface = IRequest + return config.registry.adapters.lookup( + (classifier, request_iface, ctx_iface), IView, name=name, + default=None) + + def _makeRequest(self, config): + request = DummyRequest() + request.registry = config.registry + return request + + def test_view_options(self): + response = DummyResponse() + view = lambda *arg: response + response.deriv = [] + + def deriv1(view, default, **kw): + response.deriv.append(kw['options']['deriv1']) + return view + + def deriv2(view, default, **kw): + response.deriv.append(kw['options']['deriv2']) + return view + + self.config.add_view_derivation('deriv1', deriv1, default=None) + self.config.add_view_derivation('deriv2', deriv2, default=None) + self.config.add_view(view, deriv1='test1', deriv2='test2') + self.config.commit() + + wrapper = self._getViewCallable(self.config) + request = self._makeRequest(self.config) + request.method = 'GET' + self.assertEqual(wrapper(None, request), response) + self.assertEqual(['test1', 'test2'], response.deriv) + from zope.interface import implementer from pyramid.interfaces import ( |
