[Erp5-report] r36319 rafael - in /erp5/trunk/products/ERP5Type: Core/ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Jun 14 19:09:21 CEST 2010


Author: rafael
Date: Mon Jun 14 19:09:20 2010
New Revision: 36319

URL: http://svn.erp5.org?rev=36319&view=rev
Log:
Added test_only parameter to Folder.upgradeObjectClass. This allows developer only test if there is any object to upgrade or not. (Added unit test also.)

Modified:
    erp5/trunk/products/ERP5Type/Core/Folder.py
    erp5/trunk/products/ERP5Type/tests/testFolder.py

Modified: erp5/trunk/products/ERP5Type/Core/Folder.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Core/Folder.py?rev=36319&r1=36318&r2=36319&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Core/Folder.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Core/Folder.py [utf8] Mon Jun 14 19:09:20 2010
@@ -1082,7 +1082,8 @@ class Folder(CopyContainer, CMFBTreeFold
     return update_list
 
   security.declareProtected( Permissions.ModifyPortalContent, 'upgradeObjectClass' )
-  def upgradeObjectClass(self, test_before, from_class, to_class, test_after):
+  def upgradeObjectClass(self, test_before, from_class, to_class, test_after,
+                               test_only=0):
     """
     Upgrade the class of all objects inside this particular folder:
       test_before and test_after have to be a method with one parameter.
@@ -1116,7 +1117,7 @@ class Folder(CopyContainer, CMFBTreeFold
         if hasattr(obase,'upgradeObjectClass'):
           test_list += o.upgradeObjectClass(test_before=test_before, \
                           from_class=from_class, to_class=to_class,
-                          test_after=test_after)
+                          test_after=test_after, test_only=test_only)
 
         # Test if we must apply the upgrade
         if test_before(o) is not None:
@@ -1124,7 +1125,7 @@ class Folder(CopyContainer, CMFBTreeFold
           klass = obase.__class__
           LOG("upgradeObjectClass: klass ", 0 ,str(klass))
           LOG("upgradeObjectClass: from_class ", 0 ,str(from_class))
-          if klass == from_class:
+          if klass == from_class and not test_only:
             try:
               newob = to_class(obase.id)
               newob.id = obase.id # This line activates obase.
@@ -1144,6 +1145,9 @@ class Folder(CopyContainer, CMFBTreeFold
             object_to_test = self._getOb(id)
             test_list += test_after(object_to_test)
 
+          if klass == from_class and test_only:
+            test_list += test_after(o)
+
     return test_list
 
 

Modified: erp5/trunk/products/ERP5Type/tests/testFolder.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testFolder.py?rev=36319&r1=36318&r2=36319&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testFolder.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/testFolder.py [utf8] Mon Jun 14 19:09:20 2010
@@ -163,6 +163,14 @@ class TestFolder(ERP5TypeTestCase, LogIn
       # Reset to original permissions
       self.folder.manage_permission('Modify portal content', original_permission_list[0]['roles'], original_permission_list[0]['acquire'])
 
+    def _createUpgradeObjectClassPythonScript(self):
+      """Create a simple python script """
+      createZODBPythonScript(self.getPortal().portal_skins.custom,
+                     "test_upgradeObject", 'x',
+                     'return [1]')
+      return self.getPortal().portal_skins.custom.test_upgradeObject
+      
+
     def test_upgradeObjectClass(self):
       """ Test if it changes Object Class """
       type_list = ['Folder', 'Category' ]
@@ -170,10 +178,7 @@ class TestFolder(ERP5TypeTestCase, LogIn
       obj = self.folder.newContent(portal_type="Category")
       from_class = obj.__class__
       to_class = self.folder.__class__
-      createZODBPythonScript(self.getPortal().portal_skins.custom,
-                     "test_upgradeObject", 'x',
-                     'return [1]')
-      test_script = self.getPortal().portal_skins.custom.test_upgradeObject
+      test_script = self._createUpgradeObjectClassPythonScript()
       result = self.folder.upgradeObjectClass(test_script, from_class, 
                                               to_class, test_script)
       transaction.commit()
@@ -181,6 +186,21 @@ class TestFolder(ERP5TypeTestCase, LogIn
       self.assertNotEquals(self.folder[obj.getId()].__class__, from_class)
       self.assertEquals([1], result)
 
+    def test_upgradeObjectClassOnlyTest(self):
+      """ Test if it DOES NOT change Object Class, only test it. """
+      type_list = ['Folder', 'Category' ]
+      self._setAllowedContentTypesForFolderType(type_list)
+      obj = self.folder.newContent(portal_type="Category")
+      from_class = obj.__class__
+      to_class = self.folder.__class__
+      test_script = self._createUpgradeObjectClassPythonScript()
+      result = self.folder.upgradeObjectClass(test_script, from_class,
+                                       to_class, test_script, test_only=1)
+      transaction.commit()
+      self.assertNotEquals(self.folder[obj.getId()].__class__, to_class)
+      self.assertEquals(self.folder[obj.getId()].__class__, from_class)
+      self.assertEquals([1], result)
+
     def test_upgradeObjectClassHierarchicaly(self):
       """ Test if migrate sub objects Hierarchicaly """
       type_list = ['Folder', 'Category', 'Base Category']
@@ -189,10 +209,7 @@ class TestFolder(ERP5TypeTestCase, LogIn
       obj = subfolder.newContent(portal_type="Category")
       from_class = obj.__class__
       to_class = self.folder.__class__
-      createZODBPythonScript(self.getPortal().portal_skins.custom,
-                     "test_upgradeObjectZ", 'x',
-                     'return [1]')
-      test_script = self.getPortal().portal_skins.custom.test_upgradeObjectZ
+      test_script = self._createUpgradeObjectClassPythonScript()
       result = self.folder.upgradeObjectClass(test_script, from_class,
                                               to_class, test_script)
       transaction.commit()
@@ -208,10 +225,7 @@ class TestFolder(ERP5TypeTestCase, LogIn
       obj = subobject.newContent(portal_type="Category")
       from_class = obj.__class__
       to_class = self.folder.__class__
-      createZODBPythonScript(self.getPortal().portal_skins.custom,
-                     "test_upgradeObjectZ", 'x',
-                     'return [1]')
-      test_script = self.getPortal().portal_skins.custom.test_upgradeObjectZ
+      test_script = self._createUpgradeObjectClassPythonScript()
       result = self.folder.upgradeObjectClass(test_script, from_class,
                                               to_class, test_script)
       transaction.commit()
@@ -230,10 +244,7 @@ class TestFolder(ERP5TypeTestCase, LogIn
       to_class_as_string = 'Products.ERP5Type.Document.Folder.Folder'
       from_class = obj.__class__
       to_class = self.folder.__class__
-      createZODBPythonScript(self.getPortal().portal_skins.custom,
-                     "test_upgradeObject", 'x',
-                     'return [1]')
-      test_script = self.getPortal().portal_skins.custom.test_upgradeObject
+      test_script = self._createUpgradeObjectClassPythonScript()
       result = self.folder.upgradeObjectClass(test_script, from_class_as_string,
                                               to_class_as_string, test_script)
       transaction.commit()




More information about the Erp5-report mailing list