SVN: CMF/trunk/CMF - renamed CMFDefault's FunctionalZCMLLayer to FunctionalLayer, it now sets up a complete site

Yvo Schubbe <[email protected]>
Newsgroups gmane.comp.web.zope.cmf.cvs
Message-ID <[email protected]>
Log message for revision 71094:
  - renamed CMFDefault's FunctionalZCMLLayer to FunctionalLayer, it now sets up a complete site
  - refactored functional tests using the new FunctionalLayer and ZopeTestCase's FunctionalTestCase

Changed:
  U   CMF/trunk/CMFCalendar/testing.py
  U   CMF/trunk/CMFDefault/testing.py
  U   CMF/trunk/CMFDefault/tests/test_DiscussionReply.py
  U   CMF/trunk/CMFDefault/tests/test_Image.py
  U   CMF/trunk/CMFDefault/tests/test_Portal.py
  U   CMF/trunk/CMFDefault/tests/test_RegistrationTool.py
  U   CMF/trunk/CMFDefault/tests/test_join.py
  U   CMF/trunk/CMFTopic/tests/test_DateC.py

-=-
Modified: CMF/trunk/CMFCalendar/testing.py
===================================================================
--- CMF/trunk/CMFCalendar/testing.py	2006-11-07 13:54:29 UTC (rev 71093)
+++ CMF/trunk/CMFCalendar/testing.py	2006-11-07 15:18:04 UTC (rev 71094)
@@ -22,8 +22,8 @@
 import transaction
 from Products.Five import zcml
 
+from Products.CMFCore.testing import FunctionalZCMLLayer
 from Products.CMFDefault.factory import addConfiguredSite
-from Products.CMFDefault.testing import FunctionalZCMLLayer
 
 
 class FunctionalLayer(FunctionalZCMLLayer):
@@ -31,8 +31,14 @@
     @classmethod
     def setUp(cls):
         import Products.CMFCalendar
+        import Products.CMFDefault
+        import Products.CMFTopic
+        import Products.DCWorkflow
 
         zcml.load_config('configure.zcml', Products.CMFCalendar)
+        zcml.load_config('configure.zcml', Products.CMFDefault)
+        zcml.load_config('configure.zcml', Products.CMFTopic)
+        zcml.load_config('configure.zcml', Products.DCWorkflow)
 
         app = ZopeTestCase.app()
         addConfiguredSite(app, 'site', 'Products.CMFDefault:default',

Modified: CMF/trunk/CMFDefault/testing.py
===================================================================
--- CMF/trunk/CMFDefault/testing.py	2006-11-07 13:54:29 UTC (rev 71093)
+++ CMF/trunk/CMFDefault/testing.py	2006-11-07 15:18:04 UTC (rev 71094)
@@ -15,12 +15,18 @@
 $Id$
 """
 
+from Testing import ZopeTestCase
+ZopeTestCase.installProduct('ZCTextIndex', 1)
+ZopeTestCase.installProduct('CMFCore', 1)
+
+import transaction
 from Products.Five import zcml
 
 from Products.CMFCore.testing import FunctionalZCMLLayer
+from Products.CMFDefault.factory import addConfiguredSite
 
 
-class FunctionalZCMLLayer(FunctionalZCMLLayer):
+class FunctionalLayer(FunctionalZCMLLayer):
 
     @classmethod
     def setUp(cls):
@@ -32,6 +38,15 @@
         zcml.load_config('configure.zcml', Products.CMFTopic)
         zcml.load_config('configure.zcml', Products.DCWorkflow)
 
+        app = ZopeTestCase.app()
+        addConfiguredSite(app, 'site', 'Products.CMFDefault:default',
+                          snapshot=False)
+        transaction.commit()
+        ZopeTestCase.close(app)
+
     @classmethod
     def tearDown(cls):
-        pass
+        app = ZopeTestCase.app()
+        app._delObject('site')
+        transaction.commit()
+        ZopeTestCase.close(app)

Modified: CMF/trunk/CMFDefault/tests/test_DiscussionReply.py
===================================================================
--- CMF/trunk/CMFDefault/tests/test_DiscussionReply.py	2006-11-07 13:54:29 UTC (rev 71093)
+++ CMF/trunk/CMFDefault/tests/test_DiscussionReply.py	2006-11-07 15:18:04 UTC (rev 71094)
@@ -17,47 +17,31 @@
 
 import unittest
 from Testing import ZopeTestCase
-ZopeTestCase.installProduct('ZCTextIndex', 1)
-ZopeTestCase.installProduct('CMFCore', 1)
 
 from AccessControl.SecurityManagement import newSecurityManager
-from AccessControl.SecurityManagement import noSecurityManager
 
-from Products.CMFCore.tests.base.testcase import RequestTest
-from Products.CMFDefault.factory import addConfiguredSite
-from Products.CMFDefault.testing import FunctionalZCMLLayer
+from Products.CMFDefault.testing import FunctionalLayer
 
 
-class DiscussionReplyTest(RequestTest):
+class DiscussionReplyTest(ZopeTestCase.FunctionalTestCase):
 
-    layer = FunctionalZCMLLayer
+    layer = FunctionalLayer
 
-    def setUp(self):
-        RequestTest.setUp(self)
-        try:
-            addConfiguredSite(self.root, 'cmf', 'Products.CMFDefault:default',
-                              snapshot=False)
-            self.portal = self.root.cmf
-            # Become a Manager
-            self.uf = self.portal.acl_users
-            self.uf.userFolderAddUser('manager', '', ['Manager'], [])
-            self.login('manager')
-            # Make a document
-            self.discussion = self.portal.portal_discussion
-            self.portal.invokeFactory('Document', id='doc')
-            self.discussion.overrideDiscussionFor(self.portal.doc, 1)
-            # Publish it
-            self.workflow = self.portal.portal_workflow
-            self.workflow.doActionFor(self.portal.doc, 'publish')
-        except:
-            self.tearDown()
-            raise
+    def afterSetUp(self):
+        self.portal = self.app.site
+        # Become a Manager
+        self.uf = self.portal.acl_users
+        self.uf.userFolderAddUser('manager', '', ['Manager'], [])
+        self.site_login('manager')
+        # Make a document
+        self.discussion = self.portal.portal_discussion
+        self.portal.invokeFactory('Document', id='doc')
+        self.discussion.overrideDiscussionFor(self.portal.doc, 1)
+        # Publish it
+        self.workflow = self.portal.portal_workflow
+        self.workflow.doActionFor(self.portal.doc, 'publish')
 
-    def tearDown(self):
-        noSecurityManager()
-        RequestTest.tearDown(self)
-
-    def login(self, name):
+    def site_login(self, name):
         user = self.uf.getUserById(name)
         user = user.__of__(self.uf)
         newSecurityManager(None, user)
@@ -75,14 +59,10 @@
     # Run the test again as another Member, i.e. reply to someone
     # else's document.
 
-    def setUp(self):
-        DiscussionReplyTest.setUp(self)
-        try:
-            self.uf.userFolderAddUser('member', '', ['Member'], [])
-            self.login('member')
-        except:
-            self.tearDown()
-            raise
+    def afterSetUp(self):
+        DiscussionReplyTest.afterSetUp(self)
+        self.uf.userFolderAddUser('member', '', ['Member'], [])
+        self.site_login('member')
 
 
 def test_suite():

Modified: CMF/trunk/CMFDefault/tests/test_Image.py
===================================================================
--- CMF/trunk/CMFDefault/tests/test_Image.py	2006-11-07 13:54:29 UTC (rev 71093)
+++ CMF/trunk/CMFDefault/tests/test_Image.py	2006-11-07 15:18:04 UTC (rev 71094)
@@ -17,27 +17,22 @@
 
 import unittest
 from Testing import ZopeTestCase
-ZopeTestCase.installProduct('ZCTextIndex', 1)
-ZopeTestCase.installProduct('CMFCore', 1)
 
 from os.path import join as path_join
 from cStringIO import StringIO
 
 import transaction
 from AccessControl.SecurityManagement import newSecurityManager
-from AccessControl.SecurityManagement import noSecurityManager
+from AccessControl.User import UnrestrictedUser
 
 from Products.CMFCore.testing import ConformsToContent
 from Products.CMFCore.tests.base.dummy import DummyCachingManager
 from Products.CMFCore.tests.base.dummy import DummyCachingManagerWithPolicy
 from Products.CMFCore.tests.base.dummy import DummySite
 from Products.CMFCore.tests.base.dummy import DummyTool
-from Products.CMFCore.tests.base.security import OmnipotentUser
 from Products.CMFCore.tests.base.testcase import RequestTest
-from Products.CMFCore.tests.base.testcase import SecurityRequestTest
 from Products.CMFDefault import tests
-from Products.CMFDefault.factory import addConfiguredSite
-from Products.CMFDefault.testing import FunctionalZCMLLayer
+from Products.CMFDefault.testing import FunctionalLayer
 
 TESTS_HOME = tests.__path__[0]
 TEST_JPG = path_join(TESTS_HOME, 'TestImage.jpg')
@@ -104,35 +99,25 @@
         self.assertEqual(image.content_type, 'image/jpeg')
 
 
-class TestImageCopyPaste(SecurityRequestTest):
+class TestImageCopyPaste(ZopeTestCase.FunctionalTestCase):
 
     # Tests related to http://www.zope.org/Collectors/CMF/176
     # Copy/pasting an image (or file) should reset the object's workflow state.
 
-    layer = FunctionalZCMLLayer
+    layer = FunctionalLayer
 
-    def setUp(self):
-        SecurityRequestTest.setUp(self)
-        try:
-            addConfiguredSite(self.root, 'cmf', 'Products.CMFDefault:default',
-                              snapshot=False)
-            self.site = self.root.cmf
-            newSecurityManager(None, OmnipotentUser().__of__(self.site))
-            self.site.invokeFactory('File', id='file')
-            self.site.portal_workflow.doActionFor(self.site.file, 'publish')
-            self.site.invokeFactory('Image', id='image')
-            self.site.portal_workflow.doActionFor(self.site.image, 'publish')
-            self.site.invokeFactory('Folder', id='subfolder')
-            self.subfolder = self.site.subfolder
-            self.workflow = self.site.portal_workflow
-            transaction.savepoint(optimistic=True) # Make sure we have _p_jars
-        except:
-            self.tearDown()
-            raise
+    def afterSetUp(self):
+        newSecurityManager(None, UnrestrictedUser('god', '', ['Manager'], ''))
 
-    def tearDown(self):
-        noSecurityManager()
-        SecurityRequestTest.tearDown(self)
+        self.site = self.app.site
+        self.site.invokeFactory('File', id='file')
+        self.site.portal_workflow.doActionFor(self.site.file, 'publish')
+        self.site.invokeFactory('Image', id='image')
+        self.site.portal_workflow.doActionFor(self.site.image, 'publish')
+        self.site.invokeFactory('Folder', id='subfolder')
+        self.subfolder = self.site.subfolder
+        self.workflow = self.site.portal_workflow
+        transaction.commit() # Make sure we have _p_jars
 
     def test_File_CopyPasteResetsWorkflowState(self):
         # Copy/pasting a File should reset wf state to private
@@ -186,6 +171,7 @@
         review_state = self.workflow.getInfoFor(self.site.image2, 'review_state')
         self.assertEqual(review_state, 'published')
 
+
 class TestCaching(RequestTest):
 
     def _extractFile( self ):
@@ -274,7 +260,6 @@
 
         self.root.image = self._makeOne( 'test_image', 'test_image.gif' )
         image = self.root.image
-        import transaction
         transaction.savepoint(optimistic=True)
 
         mod_time = image.modified()

Modified: CMF/trunk/CMFDefault/tests/test_Portal.py
===================================================================
--- CMF/trunk/CMFDefault/tests/test_Portal.py	2006-11-07 13:54:29 UTC (rev 71093)
+++ CMF/trunk/CMFDefault/tests/test_Portal.py	2006-11-07 15:18:04 UTC (rev 71094)
@@ -17,28 +17,20 @@
 
 import unittest
 from Testing import ZopeTestCase
-ZopeTestCase.installProduct('ZCTextIndex', 1)
-ZopeTestCase.installProduct('CMFCore', 1)
 
+from AccessControl.SecurityManagement import newSecurityManager
+from AccessControl.User import UnrestrictedUser
 from Acquisition import aq_base
 
-from Products.CMFCore.tests.base.testcase import SecurityRequestTest
-from Products.CMFDefault.testing import FunctionalZCMLLayer
+from Products.CMFDefault.testing import FunctionalLayer
 
 
-class CMFSiteTests(SecurityRequestTest):
+class CMFSiteTests(ZopeTestCase.FunctionalTestCase):
 
-    layer = FunctionalZCMLLayer
+    layer = FunctionalLayer
 
-    def _makeSite( self, id='testsite' ):
-
-        from Products.CMFDefault.factory import addConfiguredSite
-
-        addConfiguredSite(self.root, id, 'Products.CMFDefault:default',
-                          snapshot=False)
-        return getattr( self.root, id )
-
     def _makeContent( self, site, portal_type, id='document', **kw ):
+        newSecurityManager(None, UnrestrictedUser('god', '', ['Manager'], ''))
 
         site.invokeFactory( type_name=portal_type, id=id )
         content = getattr( site, id )
@@ -49,13 +41,12 @@
         return content
 
     def test_new( self ):
+        site = self.app.site
 
-        site = self._makeSite()
         self.assertEqual( len( site.portal_catalog ), 0 )
 
     def test_MetadataCataloguing( self ):
-
-        site = self._makeSite()
+        site = self.app.site
         catalog = site.portal_catalog
         site.portal_membership.memberareaCreationFlag = 0
         uid_handler = getattr(site, 'portal_uidhandler', None)
@@ -104,8 +95,7 @@
             self.assertEqual( len( catalog ), 0 )
 
     def test_DocumentEditCataloguing( self ):
-
-        site = self._makeSite()
+        site = self.app.site
         catalog = site.portal_catalog
 
         doc = self._makeContent( site
@@ -123,8 +113,7 @@
         self.assertEqual( _getMetadata( catalog, rid ), 'Bar' )
 
     def test_ImageEditCataloguing( self ):
-
-        site = self._makeSite()
+        site = self.app.site
         catalog = site.portal_catalog
 
         doc = self._makeContent( site
@@ -140,8 +129,7 @@
         self.assertEqual( _getMetadata( catalog, rid ), 'Bar' )
 
     def test_FileEditCataloguing( self ):
-
-        site = self._makeSite()
+        site = self.app.site
         catalog = site.portal_catalog
 
         doc = self._makeContent( site
@@ -157,8 +145,7 @@
         self.assertEqual( _getMetadata( catalog, rid ), 'Bar' )
 
     def test_LinkEditCataloguing( self ):
-
-        site = self._makeSite()
+        site = self.app.site
         catalog = site.portal_catalog
 
         doc = self._makeContent( site
@@ -174,8 +161,7 @@
         self.assertEqual( _getMetadata( catalog, rid ), 'Bar' )
 
     def test_NewsItemEditCataloguing( self ):
-
-        site = self._makeSite()
+        site = self.app.site
         catalog = site.portal_catalog
 
         doc = self._makeContent( site

Modified: CMF/trunk/CMFDefault/tests/test_RegistrationTool.py
===================================================================
--- CMF/trunk/CMFDefault/tests/test_RegistrationTool.py	2006-11-07 13:54:29 UTC (rev 71093)
+++ CMF/trunk/CMFDefault/tests/test_RegistrationTool.py	2006-11-07 15:18:04 UTC (rev 71094)
@@ -16,11 +16,10 @@
 """
 
 import unittest
-import Testing
-from zope.testing import doctest
+from Testing import ZopeTestCase
 
 from Products.CMFCore.tests.base.testcase import RequestTest
-from Products.CMFDefault.testing import FunctionalZCMLLayer
+from Products.CMFDefault.testing import FunctionalLayer
 
 
 class FauxMembershipTool:
@@ -83,9 +82,8 @@
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(unittest.makeSuite(RegistrationToolTests))
-    s = doctest.DocFileSuite('RegistrationTool.txt',
-                optionflags=(doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE))
-    s.layer = FunctionalZCMLLayer
+    s = ZopeTestCase.FunctionalDocFileSuite('RegistrationTool.txt')
+    s.layer = FunctionalLayer
     suite.addTest(s)
     return suite
 

Modified: CMF/trunk/CMFDefault/tests/test_join.py
===================================================================
--- CMF/trunk/CMFDefault/tests/test_join.py	2006-11-07 13:54:29 UTC (rev 71093)
+++ CMF/trunk/CMFDefault/tests/test_join.py	2006-11-07 15:18:04 UTC (rev 71094)
@@ -17,26 +17,16 @@
 
 import unittest
 from Testing import ZopeTestCase
-ZopeTestCase.installProduct('ZCTextIndex', 1)
-ZopeTestCase.installProduct('CMFCore', 1)
 
-from Products.CMFCore.tests.base.testcase import TransactionalTest
-from Products.CMFDefault.factory import addConfiguredSite
-from Products.CMFDefault.testing import FunctionalZCMLLayer
+from Products.CMFDefault.testing import FunctionalLayer
 
 
-class MembershipTests(TransactionalTest):
+class MembershipTests(ZopeTestCase.FunctionalTestCase):
 
-    layer = FunctionalZCMLLayer
+    layer = FunctionalLayer
 
-    def _makePortal(self):
-        # Create a portal instance suitable for testing
-        addConfiguredSite(self.root, 'site', 'Products.CMFDefault:default',
-                          snapshot=False)
-        return self.root.site
-
     def test_join( self ):
-        site = self._makePortal()
+        site = self.app.site
         member_id = 'test_user'
 
         site.portal_registration.addMember( member_id
@@ -51,7 +41,7 @@
     def test_join_memberproperties(self):
         # Make sure the member data wrapper carries correct properties
         # after joining
-        site = self._makePortal()
+        site = self.app.site
         member_id = 'test_user'
 
         site.portal_registration.addMember( member_id
@@ -67,7 +57,7 @@
         self.assertEqual(m.getRoles(), ('Member', 'Authenticated'))
 
     def test_join_without_email( self ):
-        site = self._makePortal()
+        site = self.app.site
 
         self.assertRaises(ValueError,
                           site.portal_registration.addMember,
@@ -77,7 +67,7 @@
                           )
 
     def test_join_with_variable_id_policies( self ):
-        site = self._makePortal()
+        site = self.app.site
         member_id = 'test.user'
 
         # Test with the default policy: Names with "." should fail

Modified: CMF/trunk/CMFTopic/tests/test_DateC.py
===================================================================
--- CMF/trunk/CMFTopic/tests/test_DateC.py	2006-11-07 13:54:29 UTC (rev 71093)
+++ CMF/trunk/CMFTopic/tests/test_DateC.py	2006-11-07 15:18:04 UTC (rev 71094)
@@ -17,15 +17,11 @@
 
 import unittest
 from Testing import ZopeTestCase
-ZopeTestCase.installProduct('ZCTextIndex', 1)
-ZopeTestCase.installProduct('CMFCore', 1)
 
 from DateTime.DateTime import DateTime
 
-from Products.CMFCore.tests.base.testcase import RequestTest
 from Products.CMFCore.tests.base.dummy import DummyContent
-from Products.CMFDefault.factory import addConfiguredSite
-from Products.CMFDefault.testing import FunctionalZCMLLayer
+from Products.CMFDefault.testing import FunctionalLayer
 from Products.CMFTopic.Topic import Topic
 
 from common import CriterionTestCase
@@ -153,9 +149,9 @@
         self.assertEqual( result[0][1]['range'], 'min:max' )
 
 
-class FriendlyDateCriterionFunctionalTests(RequestTest):
+class FriendlyDateCriterionFunctionalTests(ZopeTestCase.FunctionalTestCase):
 
-    layer = FunctionalZCMLLayer
+    layer = FunctionalLayer
 
     # Test the date criterion using a "real CMF" with catalog etc.
     selectable_diffs = [0, 1, 2, 5, 7, 14, 31, 93, 186, 365, 730]
@@ -163,12 +159,8 @@
     day_diffs = [-730, -365, -186, -93, -31, -14, -7, -5, -2, -1]
     day_diffs.extend(selectable_diffs)
 
-    def setUp(self):
-        RequestTest.setUp(self)
-
-        addConfiguredSite(self.root, 'site', 'Products.CMFDefault:default',
-                          snapshot=False)
-        self.site = self.root.site
+    def afterSetUp(self):
+        self.site = self.app.site
         self.site._setObject( 'topic', Topic('topic') )
         self.topic = self.site.topic
         self.topic.addCriterion('modified', 'Friendly Date Criterion')
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.