From 720c8893749556208296af0ee5adcfe9eb373ec7 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Tue, 11 Nov 2008 12:33:24 +0000 Subject: - Allow ``testing.registerEventListener`` to be used with Zope 3 style "object events" (subscribers accept more than a single event argument). We extend the list with the arguments, rather than append. Prep for 0.4.7. --- repoze/bfg/testing.py | 7 ++++--- repoze/bfg/tests/test_testing.py | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) (limited to 'repoze') diff --git a/repoze/bfg/testing.py b/repoze/bfg/testing.py index 26690c48d..a7fc12827 100644 --- a/repoze/bfg/testing.py +++ b/repoze/bfg/testing.py @@ -44,10 +44,11 @@ def registerEventListener(event_iface=Interface): matches ``event_iface``, that event will be appended to the list. You can then compare the values in the list to expected event notifications. This method is useful when testing code that wants - to call ``zope.component.event.dispatch``.""" + to call ``zope.component.event.dispatch`` or + ``zope.component.event.objectEventNotify``.""" L = [] - def subscriber(event): - L.append(event) + def subscriber(*event): + L.extend(event) registerSubscriber(subscriber, event_iface) return L diff --git a/repoze/bfg/tests/test_testing.py b/repoze/bfg/tests/test_testing.py index abd955c96..598436c1a 100644 --- a/repoze/bfg/tests/test_testing.py +++ b/repoze/bfg/tests/test_testing.py @@ -74,6 +74,23 @@ class TestTestingFunctions(unittest.TestCase, PlacelessSetup): self.assertEqual(L[0], event) dispatch(object()) self.assertEqual(len(L), 1) + + def test_registerEventListener_multiple(self): + from repoze.bfg import testing + from zope.interface import implements + from zope.interface import Interface + class IEvent(Interface): + pass + class Event: + object = 'foo' + implements(IEvent) + L = testing.registerEventListener((Interface, IEvent)) + from zope.component.event import objectEventNotify + event = Event() + objectEventNotify(event) + self.assertEqual(len(L), 2) + self.assertEqual(L[0], 'foo') + self.assertEqual(L[1], event) def test_registerEventListener_defaults(self): from repoze.bfg import testing -- cgit v1.2.3