From 174bb5e28cccf8cfd61826c2ba384f43a78df00e Mon Sep 17 00:00:00 2001 From: Bert JW Regeer Date: Thu, 15 Oct 2015 22:55:33 -0600 Subject: 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. --- pyramid/tests/test_config/test_derivations.py | 55 +++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) 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 ( -- cgit v1.2.3