From 49304cecdf2c51888ee4ff42ec6496207186ad9b Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Mon, 2 Nov 2009 12:23:26 +0000 Subject: - Add a new event type: ``repoze.bfg.events.AfterTraversal``. Events of this type will be sent after traversal is completed, but before any view code is invoked. Like ``repoze.bfg.events.NewRequest``, This event will have a single attribute: ``request`` representing the current request. Unlike the request attribute of ``repoze.bfg.events.NewRequest`` however, during an AfterTraversal event, the request object will possess attributes set by the traverser, most notably ``context``, which will be the context used when a view is found and invoked. The interface ``repoze.bfg.events.IAfterTraversal`` can be used to subscribe to the event. For example:: Like any framework event, a subscriber function should expect one parameter: ``event``. --- repoze/bfg/tests/test_events.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'repoze/bfg/tests/test_events.py') diff --git a/repoze/bfg/tests/test_events.py b/repoze/bfg/tests/test_events.py index d7ab772f5..f1cbfff5b 100644 --- a/repoze/bfg/tests/test_events.py +++ b/repoze/bfg/tests/test_events.py @@ -66,6 +66,31 @@ class WSGIAppEventTests(unittest.TestCase): from zope.interface.verify import verifyClass verifyClass(IWSGIApplicationCreatedEvent, WSGIApplicationCreatedEvent) +class AfterTraversalEventTests(unittest.TestCase): + def _getTargetClass(self): + from repoze.bfg.events import AfterTraversal + return AfterTraversal + + def _makeOne(self, request): + return self._getTargetClass()(request) + + def test_class_implements(self): + from repoze.bfg.interfaces import IAfterTraversal + from zope.interface.verify import verifyClass + klass = self._getTargetClass() + verifyClass(IAfterTraversal, klass) + + def test_instance_implements(self): + from repoze.bfg.interfaces import IAfterTraversal + from zope.interface.verify import verifyObject + request = DummyRequest() + inst = self._makeOne(request) + verifyObject(IAfterTraversal, inst) + + def test_ctor(self): + request = DummyRequest() + inst = self._makeOne(request) + self.assertEqual(inst.request, request) class DummyRequest: pass -- cgit v1.2.3