[Zope-Checkins] CVS: Zope/lib/python/OFS/tests - testOrderSupport.py:1.2 testOrderedFolder.py:1.2
Yvo Schubbe
schubbe@web.de
Thu, 12 Jun 2003 06:21:31 -0400
Update of /cvs-repository/Zope/lib/python/OFS/tests
In directory cvs.zope.org:/tmp/cvs-serv760/lib/python/OFS/tests
Added Files:
testOrderSupport.py testOrderedFolder.py
Log Message:
Merged yuppie-ordersupport-branch:
- Added OrderSupport and OrderedFolder.
- Added optional 'id' argument to Folder constructor.
- Modified main.dtml to play well with Folder and OrderedFolder.
=== Zope/lib/python/OFS/tests/testOrderSupport.py 1.1 => 1.2 ===
--- /dev/null Thu Jun 12 06:21:31 2003
+++ Zope/lib/python/OFS/tests/testOrderSupport.py Thu Jun 12 06:21:00 2003
@@ -0,0 +1,150 @@
+from unittest import TestCase, TestSuite, makeSuite, main
+
+import Zope
+Zope.startup()
+from Interface.Verify import verifyClass
+
+from OFS.CopySupport import CopySource
+from OFS.ObjectManager import ObjectManager
+from OFS.OrderSupport import OrderSupport
+
+class DummyObject(CopySource):
+ def __init__(self, id, meta_type):
+ self.id = id
+ self.meta_type = meta_type
+ def cb_isMoveable(self):
+ return 1
+ def manage_afterAdd(self, item, container):
+ return
+ def wl_isLocked(self):
+ return 0
+
+class OrderedObjectManager(OrderSupport, ObjectManager):
+ # disable permission verification
+ def _verifyObjectPaste(self, object, validate_src=1):
+ return
+
+
+class TestOrderSupport(TestCase):
+
+ def _makeOne(self):
+ f = OrderedObjectManager()
+ f._objects = ( {'id':'o1', 'meta_type':'mt1'}
+ , {'id':'o2', 'meta_type':'mt2'}
+ , {'id':'o3', 'meta_type':'mt1'}
+ , {'id':'o4', 'meta_type':'mt2'}
+ )
+ f.o1 = DummyObject('o1', 'mt1')
+ f.o2 = DummyObject('o2', 'mt2')
+ f.o3 = DummyObject('o3', 'mt1')
+ f.o4 = DummyObject('o4', 'mt2')
+ return f
+
+ def _doCanonTestA(self, methodname, table):
+ for arg1, order, rval in table:
+ f = self._makeOne()
+ method = getattr(f, methodname)
+ if rval == 'ValueError':
+ self.failUnlessRaises( ValueError, method, arg1 )
+ else:
+ self.failUnlessEqual( method(arg1), rval )
+ self.failUnlessEqual( f.objectIds(), order )
+
+ def _doCanonTestB(self, methodname, table):
+ for arg1, arg2, order, rval in table:
+ f = self._makeOne()
+ method = getattr(f, methodname)
+ if rval == 'ValueError':
+ self.failUnlessRaises( ValueError, method, arg1, arg2 )
+ else:
+ self.failUnlessEqual( method(arg1, arg2), rval )
+ self.failUnlessEqual( f.objectIds(), order )
+
+ def test_moveObjectsUp(self):
+ self._doCanonTestB( 'moveObjectsUp',
+ ( ( 'o4', 1, ['o1', 'o2', 'o4', 'o3'], 1 )
+ , ( 'o4', 2, ['o1', 'o4', 'o2', 'o3'], 1 )
+ , ( ('o1', 'o3'), 1, ['o1', 'o3', 'o2', 'o4'], 1 )
+ , ( ('o1', 'o3'), 9, ['o1', 'o3', 'o2', 'o4'], 1 )
+ , ( ('o2', 'o3'), 1, ['o2', 'o3', 'o1', 'o4'], 2 )
+ , ( ('n2', 'o3'), 1, ['o1', 'o2', 'o3', 'o4'], 'ValueError')
+ , ( ('o3', 'o1'), 1, ['o1', 'o3', 'o2', 'o4'], 1 )
+ )
+ )
+
+ def test_moveObjectsDown(self):
+ self._doCanonTestB( 'moveObjectsDown',
+ ( ( 'o1', 1, ['o2', 'o1', 'o3', 'o4'], 1 )
+ , ( 'o1', 2, ['o2', 'o3', 'o1', 'o4'], 1 )
+ , ( ('o2', 'o4'), 1, ['o1', 'o3', 'o2', 'o4'], 1 )
+ , ( ('o2', 'o4'), 9, ['o1', 'o3', 'o2', 'o4'], 1 )
+ , ( ('o2', 'o3'), 1, ['o1', 'o4', 'o2', 'o3'], 2 )
+ , ( ('n2', 'o3'), 1, ['o1', 'o2', 'o3', 'o4'], 'ValueError')
+ , ( ('o4', 'o2'), 1, ['o1', 'o3', 'o2', 'o4'], 1 )
+ )
+ )
+
+ def test_moveObjectsToTop(self):
+ self._doCanonTestA( 'moveObjectsToTop',
+ ( ( 'o4', ['o4', 'o1', 'o2', 'o3'], 1 )
+ , ( ('o1', 'o3'), ['o1', 'o3', 'o2', 'o4'], 1 )
+ , ( ('o2', 'o3'), ['o2', 'o3', 'o1', 'o4'], 2 )
+ , ( ('n2', 'o3'), ['o1', 'o2', 'o3', 'o4'], 'ValueError')
+ , ( ('o3', 'o1'), ['o3', 'o1', 'o2', 'o4'], 1 )
+ )
+ )
+
+ def test_moveObjectsToBottom(self):
+ self._doCanonTestA( 'moveObjectsToBottom',
+ ( ( 'o1', ['o2', 'o3', 'o4', 'o1'], 1 )
+ , ( ('o2', 'o4'), ['o1', 'o3', 'o2', 'o4'], 1 )
+ , ( ('o2', 'o3'), ['o1', 'o4', 'o2', 'o3'], 2 )
+ , ( ('n2', 'o3'), ['o1', 'o2', 'o3', 'o4'], 'ValueError')
+ , ( ('o4', 'o2'), ['o1', 'o3', 'o4', 'o2'], 1 )
+ )
+ )
+
+ def test_orderObjects(self):
+ self._doCanonTestB( 'orderObjects',
+ ( ( 'id', 'id', ['o4', 'o3', 'o2', 'o1'], 3)
+ , ( 'meta_type', '', ['o1', 'o3', 'o2', 'o4'], 1)
+ , ( 'meta_type', 'n', ['o4', 'o2', 'o3', 'o1'], 3)
+ , ( 'position', 0, ['o1', 'o2', 'o3', 'o4'], 0)
+ , ( 'position', 1, ['o4', 'o3', 'o2', 'o1'], 3)
+ )
+ )
+
+ def test_getObjectPosition(self):
+ self._doCanonTestA( 'getObjectPosition',
+ ( ( 'o2', ['o1', 'o2', 'o3', 'o4'], 1)
+ , ( 'o4', ['o1', 'o2', 'o3', 'o4'], 3)
+ , ( 'n2', ['o1', 'o2', 'o3', 'o4'], 'ValueError')
+ )
+ )
+
+ def test_moveObjectToPosition(self):
+ self._doCanonTestB( 'moveObjectToPosition',
+ ( ( 'o2', 2, ['o1', 'o3', 'o2', 'o4'], 1)
+ , ( 'o4', 2, ['o1', 'o2', 'o4', 'o3'], 1)
+ , ( 'n2', 2, ['o1', 'o2', 'o3', 'o4'], 'ValueError')
+ )
+ )
+
+ def test_manage_renameObject(self):
+ self._doCanonTestB( 'manage_renameObject',
+ ( ( 'o2', 'n2', ['o1', 'n2', 'o3', 'o4'], None )
+ , ( 'o3', 'n3', ['o1', 'o2', 'n3', 'o4'], None )
+ )
+ )
+
+ def test_interface(self):
+ from OFS.IOrderSupport import IOrderedContainer
+
+ verifyClass(IOrderedContainer, OrderSupport)
+
+
+def test_suite():
+ return TestSuite( ( makeSuite(TestOrderSupport), ) )
+
+if __name__ == '__main__':
+ main(defaultTest='test_suite')
=== Zope/lib/python/OFS/tests/testOrderedFolder.py 1.1 => 1.2 ===
--- /dev/null Thu Jun 12 06:21:31 2003
+++ Zope/lib/python/OFS/tests/testOrderedFolder.py Thu Jun 12 06:21:00 2003
@@ -0,0 +1,24 @@
+from unittest import TestCase, TestSuite, makeSuite, main
+
+import Zope
+Zope.startup()
+from Interface.Verify import verifyClass
+
+from OFS.OrderedFolder import OrderedFolder
+
+
+class TestOrderedFolder(TestCase):
+
+ def test_interface(self):
+ from OFS.IOrderSupport import IOrderedContainer
+ from webdav.WriteLockInterface import WriteLockInterface
+
+ verifyClass(IOrderedContainer, OrderedFolder)
+ verifyClass(WriteLockInterface, OrderedFolder)
+
+
+def test_suite():
+ return TestSuite( ( makeSuite(TestOrderedFolder), ) )
+
+if __name__ == '__main__':
+ main(defaultTest='test_suite')