summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBert JW Regeer <bertjw@regeer.org>2015-10-15 22:55:33 -0600
committerBert JW Regeer <bertjw@regeer.org>2015-10-20 23:21:26 -0600
commit174bb5e28cccf8cfd61826c2ba384f43a78df00e (patch)
tree45c2e91e75513b9c4e914293851a132b7788049c
parent7fb6f954f406e99a969c5d4d108ed3e5edb6f9cd (diff)
downloadpyramid-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.py55
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 (