summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2011-08-06 18:13:52 -0400
committerChris McDonough <chrism@plope.com>2011-08-06 18:13:52 -0400
commit3e15222b7d92e55f1c53ee252d3bebf25944e216 (patch)
tree342a729fe8890b5d7dd7409fe4469cfc20ac678d
parentfeabd37caa3f860b550da904165ccb17252f2bf7 (diff)
downloadpyramid-3e15222b7d92e55f1c53ee252d3bebf25944e216.tar.gz
pyramid-3e15222b7d92e55f1c53ee252d3bebf25944e216.tar.bz2
pyramid-3e15222b7d92e55f1c53ee252d3bebf25944e216.zip
test Tweens
-rw-r--r--pyramid/config.py9
-rw-r--r--pyramid/tests/test_config.py65
2 files changed, 68 insertions, 6 deletions
diff --git a/pyramid/config.py b/pyramid/config.py
index 9136c0880..db5e5f945 100644
--- a/pyramid/config.py
+++ b/pyramid/config.py
@@ -1003,10 +1003,6 @@ class Configurator(object):
"""
return self._add_tween(tween_factory, explicit=False)
- # XXX temporary bw compat for debugtoolbar
- def add_request_handler(self, factory, name):
- return self._add_tween(factory, explicit=False)
-
def _add_tween(self, tween_factory, explicit):
tween_factory = self.maybe_dotted(tween_factory)
if (hasattr(tween_factory, '__name__') and
@@ -1029,6 +1025,11 @@ class Configurator(object):
handler_manager.add(name, tween_factory, explicit)
self.action(('tween', name), register)
+ # XXX temporary bw compat for debugtoolbar
+ @action_method
+ def add_request_handler(self, factory, name): # pragma: no cover
+ return self._add_tween(factory, explicit=False)
+
@action_method
def add_subscriber(self, subscriber, iface=None):
"""Add an event :term:`subscriber` for the event stream
diff --git a/pyramid/tests/test_config.py b/pyramid/tests/test_config.py
index 0761498fb..8b11bb22a 100644
--- a/pyramid/tests/test_config.py
+++ b/pyramid/tests/test_config.py
@@ -659,6 +659,29 @@ pyramid.tests.test_config.dummy_include2""",
dummy_tween_factory)
])
+ def test_add_tween_instance(self):
+ from pyramid.interfaces import ITweens
+ from pyramid.router import excview_tween_factory
+ class ATween(object): pass
+ atween = ATween()
+ config = self._makeOne()
+ config.add_tween(atween)
+ config.commit()
+ tweens = config.registry.queryUtility(ITweens)
+ self.assertEqual(len(tweens.implicit), 2)
+ self.assertEqual(
+ tweens.implicit[0],
+ ('pyramid.router.excview_tween_factory', excview_tween_factory))
+ self.assertTrue(
+ tweens.implicit[1][0].startswith('pyramid.tests.test_config.ATween.'))
+ self.assertEqual(tweens.implicit[1][1], atween)
+
+ def test_add_tween_unsuitable(self):
+ from pyramid.exceptions import ConfigurationError
+ import pyramid.tests
+ config = self._makeOne()
+ self.assertRaises(ConfigurationError, config.add_tween, pyramid.tests)
+
def test_add_tweens_conflict(self):
from zope.configuration.config import ConfigurationConflictError
config = self._makeOne()
@@ -5488,6 +5511,45 @@ class Test_isexception(unittest.TestCase):
pass
self.assertEqual(self._callFUT(ISubException), True)
+class TestTweens(unittest.TestCase):
+ def _makeOne(self):
+ from pyramid.config import Tweens
+ return Tweens()
+
+ def test_add_explicit(self):
+ tweens = self._makeOne()
+ tweens.add('name', 'factory', explicit=True)
+ self.assertEqual(tweens.explicit, [('name', 'factory')])
+ tweens.add('name2', 'factory2', explicit=True)
+ self.assertEqual(tweens.explicit, [('name', 'factory'),
+ ('name2', 'factory2')])
+
+ def test_add_implicit(self):
+ tweens = self._makeOne()
+ tweens.add('name', 'factory', explicit=False)
+ self.assertEqual(tweens.implicit, [('name', 'factory')])
+ tweens.add('name2', 'factory2', explicit=False)
+ self.assertEqual(tweens.implicit, [('name', 'factory'),
+ ('name2', 'factory2')])
+
+ def test___call___explicit(self):
+ tweens = self._makeOne()
+ def factory1(handler, registry):
+ return handler
+ def factory2(handler, registry):
+ return '123'
+ tweens.explicit = [('name', factory1), ('name', factory2)]
+ self.assertEqual(tweens(None, None), '123')
+
+ def test___call___implicit(self):
+ tweens = self._makeOne()
+ def factory1(handler, registry):
+ return handler
+ def factory2(handler, registry):
+ return '123'
+ tweens.implicit = [('name', factory1), ('name', factory2)]
+ self.assertEqual(tweens(None, None), '123')
+
class DummyRequest:
subpath = ()
matchdict = None
@@ -5674,5 +5736,4 @@ from pyramid.interfaces import IResponse
class DummyResponse(object):
implements(IResponse)
-def dummy_tween_factory(handler, registry):
- pass
+def dummy_tween_factory(handler, registry): pass