[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