[z3-checkins] r14433 - z3/Five/trunk/tests

philikon at codespeak.net philikon at codespeak.net
Fri Jul 8 18:55:47 CEST 2005


Author: philikon
Date: Fri Jul  8 18:55:44 2005
New Revision: 14433

Added:
   z3/Five/trunk/tests/event.txt   (contents, props changed)
Modified:
   z3/Five/trunk/tests/test_event.py
Log:
converted test to doctest


Added: z3/Five/trunk/tests/event.txt
==============================================================================
--- (empty file)
+++ z3/Five/trunk/tests/event.txt	Fri Jul  8 18:55:44 2005
@@ -0,0 +1,226 @@
+Test events
+===========
+
+Before we can start, we need to set up an event subscriber that allows
+us to inspect events that will be thrown during the test:
+
+  >>> from zope.app.event.tests.placelesssetup import PlacelessSetup
+  >>> PlacelessSetup().setUp()
+
+Now make our stub class send events:
+
+  >>> from Products.Five.eventconfigure import classSendEvents
+  >>> from Products.Five.tests.simplecontent import SimpleContent
+  >>> classSendEvents(SimpleContent)
+
+Add a folder that doesn't verify objects on paste.  We use it as a
+test sandbox:
+
+  >>> from Products.Five.testing import manage_addNoVerifyPasteFolder
+  >>> manage_addNoVerifyPasteFolder(self.folder, 'npvf')
+  >>> folder = self.folder.npvf
+
+Finally add a manager user login, give it the right permissions and
+log in using it:
+
+  >>> uf = self.folder.acl_users
+  >>> uf._doAddUser('manager', 'r00t', ['Manager'], [])
+  >>> self.setPermissions(standard_permissions + ['Copy or Move'], 'Manager')
+  >>> self.login('manager')
+
+  >>> from zope.app.event.tests.placelesssetup import getEvents, clearEvents
+
+
+Added event
+------------
+
+Let's add an object to a folder:
+
+  >>> from Products.Five.tests.simplecontent import manage_addSimpleContent
+  >>> manage_addSimpleContent(folder, 'foo', 'Foo')
+
+One object event should have been sent with the event's object being
+our foo object:
+
+  >>> events = getEvents()
+  >>> len(events)
+  1
+  >>> foo = folder.foo
+  >>> events[0].object == foo
+  True
+
+That object event should have been an object added event:
+
+  >>> from zope.app.container.interfaces import IObjectAddedEvent
+  >>> events = getEvents(IObjectAddedEvent)
+  >>> len(events)
+  1
+  >>> events[0].object == foo
+  True
+  >>> events[0].newParent == foo.aq_parent
+  True
+
+Now clean up:
+
+  >>> clearEvents()
+
+
+Moved event (I) -- Renaming
+--------------------------
+
+Somehow we need to at least commit a subtransaction to make renaming
+succeed:
+
+  >>> import transaction
+  >>> transaction.commit(1)
+
+Let's rename the object we created before:
+
+  >>> folder.manage_renameObject('foo', 'bar')
+
+We should get two events...
+
+  >>> events = getEvents()
+  >>> len(events)
+  2
+
+the removed event...
+
+  >>> events[0].object == foo
+  True
+  >>> events[0].oldName
+  'foo'
+  >>> events[0].newName
+  >>> events[0].oldParent == folder
+  True
+  >>> events[0].newParent
+
+and the moved event:
+
+  >>> events[1].oldName
+  'foo'
+  >>> events[1].newName
+  'bar'
+  >>> events[1].oldParent == folder
+  True
+  >>> events[1].newParent == folder
+  True
+
+Now clean up:
+
+  >>> folder.manage_delObjects(['bar'])
+  >>> clearEvents()
+
+We don't delete the stub object just yet because it's being used in
+the next part of the test.
+
+
+Moved event (II) -- Cut and paste
+---------------------------------
+
+Let's move from one folder to another:
+
+  >>> manage_addNoVerifyPasteFolder(folder, 'folder1', 'Folder1')
+  >>> folder1 = folder.folder1
+  >>> manage_addNoVerifyPasteFolder(folder, 'folder2', 'Folder2')
+  >>> folder2 = folder.folder2
+  >>> manage_addSimpleContent(folder1, 'foo', 'Foo')
+  >>> foo = folder1.foo
+
+We need to trigger a subtransaction before cut/paste can work:
+
+  >>> transaction.commit(1)
+  >>> cb = folder1.manage_cutObjects(['foo'])
+  >>> info = folder2.manage_pasteObjects(cb)
+
+Apart from the added event we triggerred when we added the stub object
+to the folder, we expect two events...
+
+  >>> events = getEvents()
+  >>> len(events)
+  3
+  >>> len(getEvents(IObjectAddedEvent))
+  1
+
+a removed event...
+
+  >>> events[1].oldParent == folder1
+  True
+  >>> events[1].newParent
+
+and a moved event:
+
+  >>> events[2].object == foo
+  True
+  >>> events[2].oldParent == folder1
+  True
+  >>> events[2].newParent == folder2
+  True
+  >>> events[2].oldName
+  'foo'
+  >>> events[2].newName
+  'foo'
+
+Now clean up:
+
+  >>> folder.manage_delObjects(['folder1'])
+  >>> folder.manage_delObjects(['folder2'])
+  >>> clearEvents()
+
+
+Copied event
+------------
+
+  >>> manage_addSimpleContent(folder, 'foo', 'Foo')
+  >>> manage_addNoVerifyPasteFolder(folder, 'folder1')
+  >>> folder1 = folder.folder1
+
+We need to trigger subtransaction before copy/paste can work
+
+  >>> transaction.commit(1)
+  >>> cb = folder.manage_copyObjects(['foo'])
+  >>> info = folder1.manage_pasteObjects(cb)
+  >>> foo = folder1.foo
+
+Apart from the added event we triggerred when we added the stub object
+to the folder, we expect two events...
+
+  >>> events = getEvents()
+  >>> len(events)
+  3
+
+a copied event...
+
+  >>> events[1].object == foo
+  True
+
+and an added event:
+
+  >>> events[2].object == foo
+  True
+  >>> events[2].newParent == folder1
+  True
+  >>> events[2].newName
+  'foo'
+
+Now clean up:
+
+  >>> folder.manage_delObjects(['folder1'])
+  >>> folder.manage_delObjects(['foo'])
+  >>> clearEvents()
+
+
+Removed event
+-------------
+
+  >>> manage_addSimpleContent(folder, 'foo', 'Foo')
+  >>> folder.manage_delObjects(['foo'])
+
+  >>> events = getEvents()
+  >>> len(events)
+  2
+
+  >>> events[1].object.id
+  'foo'
+
+  >>> clearEvents()

Modified: z3/Five/trunk/tests/test_event.py
==============================================================================
--- z3/Five/trunk/tests/test_event.py	(original)
+++ z3/Five/trunk/tests/test_event.py	Fri Jul  8 18:55:44 2005
@@ -19,143 +19,10 @@
 if __name__ == '__main__':
     execfile(os.path.join(sys.path[0], 'framework.py'))
 
-import unittest
-from Testing.ZopeTestCase import ZopeTestCase, installProduct
-from Testing.ZopeTestCase import standard_permissions
-installProduct('Five')
-
-import transaction
-
-import Products.Five.tests
-from Products.Five import zcml
-from Products.Five.testing import manage_addNoVerifyPasteFolder
-from Products.Five.tests.simplecontent import manage_addSimpleContent
-from Products.Five.tests.subscriber import clear
-from Products.Five.tests.subscriber import objectEventCatcher, \
-     objectAddedEventCatcher, objectMovedEventCatcher, \
-     objectCopiedEventCatcher, objectRemovedEventCatcher
-
-class EventTest(ZopeTestCase):
-
-    def afterSetUp(self):
-        zcml.load_config('event.zcml', package=Products.Five.tests)
-        manage_addNoVerifyPasteFolder(self.folder, 'npvf')
-        self.folder = self.folder.npvf
-
-        uf = self.folder.acl_users
-        uf._doAddUser('manager', 'r00t', ['Manager'], [])
-        self.login('manager')
-        self.setPermissions(
-            standard_permissions + ['Copy or Move'], 'Manager')
-        # clear all events
-        clear()
-
-    def test_added_event(self):
-        manage_addSimpleContent(self.folder, 'foo', 'Foo')
-        foo = self.folder.foo
-        events = objectEventCatcher.getEvents()
-        self.assertEquals(1, len(events))
-        self.assertEquals(foo.getPhysicalPath(),
-                          events[0].object.getPhysicalPath())
-        events = objectAddedEventCatcher.getEvents()
-        self.assertEquals(1, len(events))
-        self.assertEquals(foo.getPhysicalPath(),
-                          events[0].object.getPhysicalPath())
-        self.assertEquals(foo.aq_parent.getPhysicalPath(),
-                          events[0].newParent.getPhysicalPath())
-
-    def test_moved_event(self):
-        manage_addSimpleContent(self.folder, 'foo', 'Foo')
-        # somehow we need to at least commit a subtransaction to make
-        # renaming succeed
-        transaction.commit(1)
-        self.folder.manage_renameObject('foo', 'bar')
-        bar = self.folder.bar
-        events = objectEventCatcher.getEvents()
-        self.assertEquals(3, len(events))
-        # will have new location so should still match
-        self.assertEquals(bar.getPhysicalPath(),
-                          events[0].object.getPhysicalPath())
-        self.assertEquals(bar.getPhysicalPath(),
-                          events[1].object.getPhysicalPath())
-        # removed event
-        self.assertEquals('foo',
-                          events[1].oldName)
-        self.assertEquals(None,
-                          events[1].newName)
-        # moved event
-        self.assertEquals('foo',
-                          events[2].oldName)
-        self.assertEquals('bar',
-                          events[2].newName)
-        self.assertEquals(self.folder.getPhysicalPath(),
-                          events[2].oldParent.getPhysicalPath())
-        self.assertEquals(self.folder.getPhysicalPath(),
-                          events[2].oldParent.getPhysicalPath())
-
-    def test_moved_event2(self):
-        # move from one folder to another
-        manage_addNoVerifyPasteFolder(self.folder, 'folder1', 'Folder1')
-        folder1 = self.folder.folder1
-        manage_addNoVerifyPasteFolder(self.folder, 'folder2', 'Folder2')
-        folder2 = self.folder.folder2
-        manage_addSimpleContent(folder1, 'foo', 'Foo')
-        foo = folder1.foo
-        # need to trigger subtransaction before copy/paste can work
-        transaction.commit(1)
-        cb = folder1.manage_cutObjects(['foo'])
-        folder2.manage_pasteObjects(cb)
-        newfoo = folder2.foo
-
-        events = objectMovedEventCatcher.getEvents()
-        self.assertEquals(3, len(events))
-        self.assertEquals(1, len(objectAddedEventCatcher.getEvents()))
-        # removed event
-        self.assertEquals(folder1.getPhysicalPath(),
-                          events[1].oldParent.getPhysicalPath())
-        self.assertEquals(None,
-                          events[1].newParent)
-        # moved event
-        self.assertEquals(newfoo.getPhysicalPath(),
-                          events[2].object.getPhysicalPath())
-        self.assertEquals(folder1.getPhysicalPath(),
-                          events[2].oldParent.getPhysicalPath())
-        self.assertEquals(folder2.getPhysicalPath(),
-                          events[2].newParent.getPhysicalPath())
-        self.assertEquals('foo',
-                          events[2].oldName)
-        self.assertEquals('foo',
-                          events[2].newName)
-
-    def test_copied_event(self):
-        manage_addSimpleContent(self.folder, 'foo', 'Foo')
-        manage_addNoVerifyPasteFolder(self.folder, 'folder1')
-        folder1 = self.folder.folder1
-        # need to trigger subtransaction before copy/paste can work
-        transaction.commit(1)
-        cb = self.folder.manage_copyObjects(['foo'])
-        folder1.manage_pasteObjects(cb)
-        foo_copy = folder1.foo
-        events = objectCopiedEventCatcher.getEvents()
-        self.assertEquals(1, len(events))
-        self.assertEquals(foo_copy.getPhysicalPath(),
-                          events[0].object.getPhysicalPath())
-        events = objectAddedEventCatcher.getEvents()
-        self.assertEquals(2, len(events))
-        self.assertEquals(foo_copy.getPhysicalPath(),
-                          events[1].object.getPhysicalPath())
-
-    def test_removed_event(self):
-        manage_addSimpleContent(self.folder, 'foo', 'Foo')
-        self.folder.manage_delObjects(['foo'])
-        events = objectRemovedEventCatcher.getEvents()
-        self.assertEquals(1, len(events))
-        self.assertEquals('foo', events[0].object.id)
-
 def test_suite():
-    suite = unittest.TestSuite()
-    suite.addTest(unittest.makeSuite(EventTest))
-    return suite
+    from Testing.ZopeTestCase import installProduct, ZopeDocFileSuite
+    installProduct('Five')
+    return ZopeDocFileSuite('event.txt', package="Products.Five.tests")
 
 if __name__ == '__main__':
     framework()


More information about the z3-checkins mailing list