Log message for revision 74110: Merged trunk r74108:74109 into 2.10 branch. Repair (and simplify) tests in response to http://www.zope.org/Collectors/Zope/2308.
Changed: U Zope/branches/2.10/lib/python/OFS/tests/testCopySupportEvents.py -=- Modified: Zope/branches/2.10/lib/python/OFS/tests/testCopySupportEvents.py =================================================================== --- Zope/branches/2.10/lib/python/OFS/tests/testCopySupportEvents.py 2007-04-12 18:19:57 UTC (rev 74109) +++ Zope/branches/2.10/lib/python/OFS/tests/testCopySupportEvents.py 2007-04-12 18:33:59 UTC (rev 74110) @@ -15,15 +15,7 @@ from zope import interface from zope import component -from zope.app.container.interfaces import IObjectAddedEvent -from zope.app.container.interfaces import IObjectMovedEvent -from zope.app.container.interfaces import IObjectRemovedEvent -from zope.app.container.interfaces import IContainerModifiedEvent -from zope.lifecycleevent.interfaces import IObjectCopiedEvent -from OFS.interfaces import IObjectWillBeAddedEvent -from OFS.interfaces import IObjectWillBeMovedEvent -from OFS.interfaces import IObjectWillBeRemovedEvent -from OFS.interfaces import IObjectClonedEvent +from zope.component.interfaces import IObjectEvent from zope.testing import cleanup from Products.Five import zcml @@ -35,7 +27,7 @@ def reset(self): self._called = [] def trace(self, ob, event): - self._called.append((ob.getId(), event)) + self._called.append((ob.getId(), event.__class__.__name__)) def called(self): return self._called @@ -62,57 +54,6 @@ pass # Always allow -def objectAddedEvent(ob, event): - eventlog.trace(ob, 'ObjectAddedEvent') - -def objectCopiedEvent(ob, event): - eventlog.trace(ob, 'ObjectCopiedEvent') - -def objectMovedEvent(ob, event): - if IObjectAddedEvent.providedBy(event): - return - if IObjectRemovedEvent.providedBy(event): - return - eventlog.trace(ob, 'ObjectMovedEvent') - -def objectRemovedEvent(ob, event): - eventlog.trace(ob, 'ObjectRemovedEvent') - -def containerModifiedEvent(ob, event): - eventlog.trace(ob, 'ContainerModifiedEvent') - -def objectWillBeAddedEvent(ob, event): - eventlog.trace(ob, 'ObjectWillBeAddedEvent') - -def objectWillBeMovedEvent(ob, event): - if IObjectWillBeAddedEvent.providedBy(event): - return - if IObjectWillBeRemovedEvent.providedBy(event): - return - eventlog.trace(ob, 'ObjectWillBeMovedEvent') - -def objectWillBeRemovedEvent(ob, event): - eventlog.trace(ob, 'ObjectWillBeRemovedEvent') - -def objectClonedEvent(ob, event): - eventlog.trace(ob, 'ObjectClonedEvent') - - -def setUpItemSubscribers(interface): - component.provideHandler(objectAddedEvent, (interface, IObjectAddedEvent)) - component.provideHandler(objectCopiedEvent, (interface, IObjectCopiedEvent)) - component.provideHandler(objectMovedEvent, (interface, IObjectMovedEvent)) - component.provideHandler(objectRemovedEvent, (interface, IObjectRemovedEvent)) - component.provideHandler(objectWillBeAddedEvent, (interface, IObjectWillBeAddedEvent)) - component.provideHandler(objectWillBeMovedEvent, (interface, IObjectWillBeMovedEvent)) - component.provideHandler(objectWillBeRemovedEvent, (interface, IObjectWillBeRemovedEvent)) - component.provideHandler(objectClonedEvent, (interface, IObjectClonedEvent)) - -def setUpFolderSubscribers(interface): - setUpItemSubscribers(interface) - component.provideHandler(containerModifiedEvent, (interface, IContainerModifiedEvent)) - - class EventLayer: @classmethod @@ -120,8 +61,8 @@ cleanup.cleanUp() zcml._initialized = 0 zcml.load_site() - setUpItemSubscribers(ITestItem) - setUpFolderSubscribers(ITestFolder) + component.provideHandler(eventlog.trace, (ITestItem, IObjectEvent)) + component.provideHandler(eventlog.trace, (ITestFolder, IObjectEvent)) @classmethod def tearDown(cls): @@ -271,19 +212,26 @@ # Reset event log eventlog.reset() + def assertEqual(self, first, second, msg=None): + # XXX: Compare sets as the order of event handlers cannot be + # relied on between objects. + if not set(first) == set(second): + raise self.failureException, \ + (msg or '%r != %r' % (first, second)) + def test_1_Clone(self): # Test clone self.subfolder.manage_clone(self.folder.myfolder, 'myfolder') self.assertEqual(eventlog.called(), - [#('mydoc', 'ObjectCopiedEvent'), - ('myfolder', 'ObjectCopiedEvent'), - ('mydoc', 'ObjectWillBeAddedEvent'), + [('myfolder', 'ObjectCopiedEvent'), + #('mydoc', 'ObjectCopiedEvent'), ('myfolder', 'ObjectWillBeAddedEvent'), - ('mydoc', 'ObjectAddedEvent'), + ('mydoc', 'ObjectWillBeAddedEvent'), ('myfolder', 'ObjectAddedEvent'), + ('mydoc', 'ObjectAddedEvent'), ('subfolder', 'ContainerModifiedEvent'), - ('mydoc', 'ObjectClonedEvent'), - ('myfolder', 'ObjectClonedEvent')] + ('myfolder', 'ObjectClonedEvent'), + ('mydoc', 'ObjectClonedEvent')] ) def test_2_CopyPaste(self): @@ -291,15 +239,15 @@ cb = self.folder.manage_copyObjects(['myfolder']) self.subfolder.manage_pasteObjects(cb) self.assertEqual(eventlog.called(), - [#('mydoc', 'ObjectCopiedEvent'), - ('myfolder', 'ObjectCopiedEvent'), - ('mydoc', 'ObjectWillBeAddedEvent'), + [('myfolder', 'ObjectCopiedEvent'), + #('mydoc', 'ObjectCopiedEvent'), ('myfolder', 'ObjectWillBeAddedEvent'), - ('mydoc', 'ObjectAddedEvent'), + ('mydoc', 'ObjectWillBeAddedEvent'), ('myfolder', 'ObjectAddedEvent'), + ('mydoc', 'ObjectAddedEvent'), ('subfolder', 'ContainerModifiedEvent'), - ('mydoc', 'ObjectClonedEvent'), - ('myfolder', 'ObjectClonedEvent')] + ('myfolder', 'ObjectClonedEvent'), + ('mydoc', 'ObjectClonedEvent')] ) def test_3_CutPaste(self): @@ -307,10 +255,10 @@ cb = self.folder.manage_cutObjects(['myfolder']) self.subfolder.manage_pasteObjects(cb) self.assertEqual(eventlog.called(), - [('mydoc', 'ObjectWillBeMovedEvent'), - ('myfolder', 'ObjectWillBeMovedEvent'), - ('mydoc', 'ObjectMovedEvent'), + [('myfolder', 'ObjectWillBeMovedEvent'), + ('mydoc', 'ObjectWillBeMovedEvent'), ('myfolder', 'ObjectMovedEvent'), + ('mydoc', 'ObjectMovedEvent'), ('folder', 'ContainerModifiedEvent'), ('subfolder', 'ContainerModifiedEvent')] ) @@ -319,10 +267,10 @@ # Test rename self.folder.manage_renameObject('myfolder', 'yourfolder') self.assertEqual(eventlog.called(), - [('mydoc', 'ObjectWillBeMovedEvent'), - ('myfolder', 'ObjectWillBeMovedEvent'), - ('mydoc', 'ObjectMovedEvent'), + [('myfolder', 'ObjectWillBeMovedEvent'), + ('mydoc', 'ObjectWillBeMovedEvent'), ('yourfolder', 'ObjectMovedEvent'), + ('mydoc', 'ObjectMovedEvent'), ('folder', 'ContainerModifiedEvent')] ) @@ -333,15 +281,15 @@ req.environ['HTTP_DESTINATION'] = '%s/subfolder/myfolder' % self.folder.absolute_url() self.folder.myfolder.COPY(req, req.RESPONSE) self.assertEqual(eventlog.called(), - [#('mydoc', 'ObjectCopiedEvent'), - ('myfolder', 'ObjectCopiedEvent'), - ('mydoc', 'ObjectWillBeAddedEvent'), + [('myfolder', 'ObjectCopiedEvent'), + #('mydoc', 'ObjectCopiedEvent'), ('myfolder', 'ObjectWillBeAddedEvent'), - ('mydoc', 'ObjectAddedEvent'), + ('mydoc', 'ObjectWillBeAddedEvent'), ('myfolder', 'ObjectAddedEvent'), + ('mydoc', 'ObjectAddedEvent'), ('subfolder', 'ContainerModifiedEvent'), - ('mydoc', 'ObjectClonedEvent'), - ('myfolder', 'ObjectClonedEvent')] + ('myfolder', 'ObjectClonedEvent'), + ('mydoc', 'ObjectClonedEvent')] ) def test_6_MOVE(self): @@ -351,10 +299,10 @@ req.environ['HTTP_DESTINATION'] = '%s/subfolder/myfolder' % self.folder.absolute_url() self.folder.myfolder.MOVE(req, req.RESPONSE) self.assertEqual(eventlog.called(), - [('mydoc', 'ObjectWillBeMovedEvent'), - ('myfolder', 'ObjectWillBeMovedEvent'), - ('mydoc', 'ObjectMovedEvent'), + [('myfolder', 'ObjectWillBeMovedEvent'), + ('mydoc', 'ObjectWillBeMovedEvent'), ('myfolder', 'ObjectMovedEvent'), + ('mydoc', 'ObjectMovedEvent'), ('folder', 'ContainerModifiedEvent'), ('subfolder', 'ContainerModifiedEvent')] ) @@ -365,10 +313,10 @@ req['URL'] = '%s/myfolder' % self.folder.absolute_url() self.folder.myfolder.DELETE(req, req.RESPONSE) self.assertEqual(eventlog.called(), - [('mydoc', 'ObjectWillBeRemovedEvent'), - ('myfolder', 'ObjectWillBeRemovedEvent'), - ('mydoc', 'ObjectRemovedEvent'), + [('myfolder', 'ObjectWillBeRemovedEvent'), + ('mydoc', 'ObjectWillBeRemovedEvent'), ('myfolder', 'ObjectRemovedEvent'), + ('mydoc', 'ObjectRemovedEvent'), ('folder', 'ContainerModifiedEvent')] ) _______________________________________________ Zope-Checkins maillist - [EMAIL PROTECTED] http://mail.zope.org/mailman/listinfo/zope-checkins