[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