diff --git a/bt5/erp5_core_test/MixinTemplateItem/portal_components/mixin.erp5.TestWorkflowMixin.xml b/bt5/erp5_core_test/MixinTemplateItem/portal_components/mixin.erp5.TestWorkflowMixin.xml index 5fab714fcbf5fbb980e0d42df49e3432d1186293..f864b36f204d9b9ab2fb1e2c9e5da7f24ec3a6a4 100644 --- a/bt5/erp5_core_test/MixinTemplateItem/portal_components/mixin.erp5.TestWorkflowMixin.xml +++ b/bt5/erp5_core_test/MixinTemplateItem/portal_components/mixin.erp5.TestWorkflowMixin.xml @@ -100,24 +100,28 @@ </record> <record id="4" aka="AAAAAAAAAAQ="> <pickle> - <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> + <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> <pickle> - <tuple> - <none/> - <list> - <dictionary> - <item> - <key> <string>action</string> </key> - <value> <string>validate</string> </value> - </item> - <item> - <key> <string>validation_state</string> </key> - <value> <string>validated</string> </value> - </item> - </dictionary> - </list> - </tuple> + <dictionary> + <item> + <key> <string>_log</string> </key> + <value> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>validate</string> </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>validated</string> </value> + </item> + </dictionary> + </list> + </value> + </item> + </dictionary> </pickle> </record> </ZopeData> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBase.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBase.py index 3076d6b65923bf664279dadfb33f15817d4f8faf..8ee9e7982cda2a8447f39163716a861d75b0d850 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBase.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBase.py @@ -79,7 +79,7 @@ class TestBase(ERP5TypeTestCase, ZopeTestCase.Functional): """ return ('erp5_base',) - def login(self): + def login(self): # pylint:disable=arguments-differ uf = self.getPortal().acl_users uf._doAddUser(self.username, '', ['Manager'], []) user = uf.getUserById(self.username).__of__(uf) diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBase.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBase.xml index 88a037a0df4ebb9a00b4d8c3038a9a7637d78e26..579c8a47e60921985b9eb0cdfc1d3e31eb028551 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBase.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBase.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testBase</string> </value> @@ -43,11 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 82, 2: Arguments number differs from overridden \'login\' method (arguments-differ)</string> - <string>W:951, 10: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:1034, 10: Redefining built-in \'id\' (redefined-builtin)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -57,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -76,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -85,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBusinessTemplate.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBusinessTemplate.py index 822d50cbf8800f7519213759be330e109fe99443..fab263112dfbc472f38a00b6addc00b709f91ea4 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBusinessTemplate.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBusinessTemplate.py @@ -42,7 +42,6 @@ from Products.ERP5Type.tests.utils import LogInterceptor from Products.ERP5Type.Workflow import addWorkflowByType import shutil import os -import gc import random import string import tempfile @@ -65,7 +64,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): ) ## Ignore errors from PortalTransforms (e.g. missing binaries) - def _catch_log_errors(self): + def _catch_log_errors(self): # pylint:disable=arguments-differ LogInterceptor._catch_log_errors(self) level = self.level def _tr_init(*args, **kw): @@ -82,7 +81,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): assert self.output == 'BROKEN' Transform.manage_beforeDelete = manage_beforeDelete - def _ignore_log_errors(self): + def _ignore_log_errors(self): # pylint:disable=arguments-differ Transform._tr_init = Transform_tr_init Transform.manage_beforeDelete = Transform_manage_beforeDelete LogInterceptor._ignore_log_errors(self) @@ -127,10 +126,6 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): for d in getattr(self, "rmdir_list", ()): shutil.rmtree(d) - pw = self.getWorkflowTool() - - props = {} - for type_object in self.getTypesTool().listTypeInfo(): workflow_list = type_object.getTypeWorkflowList() if 'geek_workflow' in workflow_list: @@ -421,8 +416,8 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): """ trash = self.getTrashTool() trash_ids = list(trash.objectIds()) - for id in trash_ids: - trash.deleteContent(id) + for id_ in trash_ids: + trash.deleteContent(id_) self.assertFalse(len(trash.objectIds()) > 0) def stepCheckTrashBin(self, sequence=None, **kw): @@ -600,21 +595,21 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): Create Module with objects """ portal = self.getPortal() - id = 'geek_module' + id_ = 'geek_module' n = 0 - while id in portal.objectIds(): + while id_ in portal.objectIds(): n = n + 1 - id = "%s_%s" %('geek_module', n) - module = portal.newContent(id=id, portal_type='Geek Module') + id_ = "%s_%s" % ('geek_module', n) + module = portal.newContent(id=id_, portal_type='Geek Module') self.assertTrue(module is not None) # add a specific permission to module which do not use acquisition module.manage_permission('Copy or Move', ['Assignor'], False) sequence.edit(module_id=module.getId()) module_object_list = [] - for i in xrange(10): - object = module.newContent(portal_type = 'Geek Object') - self.assertTrue(object is not None) - module_object_list.append(object) + for _ in xrange(10): + obj = module.newContent(portal_type = 'Geek Object') + self.assertIsNotNone(obj) + module_object_list.append(obj) sequence.edit(module_object_id_list=module_object_list) def stepAddModuleToBusinessTemplate(self, sequence=None, **kw): @@ -623,7 +618,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): """ bt = sequence.get('current_bt', None) module_id = sequence.get('module_id', None) - self.assertTrue(module_id is not None) + self.assertIsNotNone(module_id) bt.edit(template_module_id_list=[module_id]) def stepCreateModuleObjects(self, sequence=None, **kw): @@ -633,12 +628,12 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): portal = self.getPortal() module_id = sequence.get('module_id') module = portal._getOb(module_id, None) - self.assertTrue(module is not None) + self.assertIsNotNone(module) module_object_list = [] - for i in xrange(10): - object = module.newContent(portal_type = 'Geek Object') - self.assertTrue(object is not None) - module_object_list.append(object.getId()) + for _ in xrange(10): + obj = module.newContent(portal_type = 'Geek Object') + self.assertIsNotNone(obj) + module_object_list.append(obj.getId()) sequence.edit(module_object_id_list=module_object_list) def stepRemoveModule(self, sequence=None, **kw): @@ -648,7 +643,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): portal = self.getPortal() module_id = sequence.get("module_id") portal.manage_delObjects([module_id]) - self.assertFalse(portal._getOb(module_id, None) is not None) + self.assertIsNone(portal._getOb(module_id, None)) def stepCheckModuleExists(self, sequence=None, **kw): """ @@ -657,7 +652,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): portal = self.getPortal() module_id = sequence.get("module_id") new_module = portal._getOb(module_id, None) - self.assertFalse(new_module is None) + self.assertIsNotNone(new_module) def stepCheckModulePermissions(self, sequence=None, **kw): """ @@ -687,11 +682,10 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): portal = self.getPortal() module_id = sequence.get('module_id') module = portal._getOb(module_id) - self.assertTrue(module is not None) + self.assertIsNotNone(module) object_id_list = sequence.get('module_object_id_list') for object_id in object_id_list: - object = module._getOb(object_id, None) - self.assertTrue(object is not None) + self.assertIsNotNone(module._getOb(object_id, None)) def stepCheckModuleObjectsRemoved(self, sequence=None, **kw): """ @@ -703,8 +697,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): self.assertTrue(module is not None) object_id_list = sequence.get('module_object_id_list') for object_id in object_id_list: - object = module._getOb(object_id, None) - self.assertTrue(object is None) + self.assertIsNone(module._getOb(object_id, None)) def stepCheckModuleRemoved(self, sequence=None, **kw): """ @@ -712,7 +705,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): """ portal = self.getPortal() module_id = sequence.get("module_id") - self.assertFalse(portal._getOb(module_id, None) is not None) + self.assertIsNone(portal._getOb(module_id, None)) # skins folder def stepCreateSkinFolder(self, sequence=None, **kw): @@ -722,7 +715,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): ps = self.getSkinsTool() ps.manage_addProduct['OFSP'].manage_addFolder('erp5_geek') skin_folder = ps._getOb('erp5_geek', None) - self.assertTrue(skin_folder is not None) + self.assertIsNotNone(skin_folder) sequence.edit(skin_folder_id=skin_folder.getId()) # add skin in layers for skin_name, selection in ps.getSkinPaths(): @@ -738,7 +731,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): ps = self.getSkinsTool() ps.manage_addProduct['OFSP'].manage_addFolder('erp5_nerd') skin_folder = ps._getOb('erp5_nerd', None) - self.assertTrue(skin_folder is not None) + self.assertIsNotNone(skin_folder) sequence.edit(another_skin_folder_id=skin_folder.getId()) # add skin in layers for skin_name, selection in ps.getSkinPaths(): @@ -754,7 +747,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): ps = self.getSkinsTool() ps.manage_addProduct['OFSP'].manage_addFolder('erp5_static') skin_folder = ps._getOb('erp5_static', None) - self.assertTrue(skin_folder is not None) + self.assertIsNotNone(skin_folder) sequence.edit(static_skin_folder_id=skin_folder.getId()) # add skin in layers for skin_name, selection in ps.getSkinPaths(): @@ -767,10 +760,10 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): def stepCreateSkinSubFolder(self, sequence=None, **kw): ps = self.getSkinsTool() skin_folder = ps._getOb('erp5_geek', None) - self.assertTrue(skin_folder is not None) + self.assertIsNotNone(skin_folder) skin_folder.manage_addFolder('erp5_subgeek') skin_subfolder = skin_folder._getOb('erp5_subgeek', None) - self.assertTrue(skin_subfolder is not None) + self.assertIsNotNone(skin_subfolder) sequence.edit(skin_subfolder_id=skin_subfolder.getId()) def stepCheckSkinSubFolderExists(self, sequence=None, **kw): @@ -780,21 +773,21 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): ps = self.getSkinsTool() skin_id = sequence.get('skin_folder_id') skin_folder = ps._getOb(skin_id, None) - self.assertTrue(skin_folder is not None) + self.assertIsNotNone(skin_folder) subskin_id = sequence.get('skin_subfolder_id') skin_subfolder = skin_folder._getOb(subskin_id, None) - self.assertTrue(skin_subfolder is not None) + self.assertIsNotNone(skin_subfolder) def stepCreateNewForm(self, sequence=None): """Create a new ERP5 Form in a skin folder.""" ps = self.getSkinsTool() skin_folder = ps._getOb('erp5_geek', None) - self.assertNotEquals(skin_folder, None) + self.assertIsNotNone(skin_folder) form_id = 'Geek_view' addERP5Form = skin_folder.manage_addProduct['ERP5Form'].addERP5Form addERP5Form(form_id, 'View') form = skin_folder._getOb(form_id, None) - self.assertNotEquals(form, None) + self.assertIsNotNone(form) self.assertEqual(sorted(form.get_groups(include_empty=1)), sorted(['left', 'right', 'center', 'bottom', 'hidden'])) addField = form.manage_addProduct['Formulator'].manage_addField @@ -813,12 +806,12 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): """Create a new ERP5 Form in a skin folder.""" ps = self.getSkinsTool() skin_folder = ps._getOb('erp5_nerd', None) - self.assertNotEquals(skin_folder, None) + self.assertIsNotNone(skin_folder) form_id = 'Geek_view' addERP5Form = skin_folder.manage_addProduct['ERP5Form'].addERP5Form addERP5Form(form_id, 'View') form = skin_folder._getOb(form_id, None) - self.assertNotEquals(form, None) + self.assertIsNotNone(form) self.assertEqual(sorted(form.get_groups(include_empty=1)), sorted(['left', 'right', 'center', 'bottom', 'hidden'])) addField = form.manage_addProduct['Formulator'].manage_addField @@ -837,22 +830,22 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): """Remove an ERP5 Form.""" ps = self.getSkinsTool() skin_folder = ps._getOb('erp5_geek', None) - self.assertNotEquals(skin_folder, None) + self.assertIsNotNone(skin_folder) form_id = sequence.get('form_id') form = skin_folder._getOb(form_id, None) - self.assertNotEquals(form, None) + self.assertIsNotNone(form) skin_folder.manage_delObjects([form_id]) form = skin_folder._getOb(form_id, None) - self.assertEqual(form, None) + self.assertIsNone(form) def stepAddFormField(self, sequence=None): """Add a field to an ERP5 Form.""" ps = self.getSkinsTool() skin_folder = ps._getOb('erp5_geek', None) - self.assertNotEquals(skin_folder, None) + self.assertIsNotNone(skin_folder) form_id = sequence.get('form_id') form = skin_folder._getOb(form_id, None) - self.assertNotEquals(form, None) + self.assertIsNotNone(form) self.assertEqual(sorted(form.get_groups(include_empty=1)), sorted(['left', 'right', 'center', 'bottom', 'hidden'])) addField = form.manage_addProduct['Formulator'].manage_addField @@ -871,12 +864,12 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): def stepModifyFormTitle(self, sequence=None): ps = self.getSkinsTool() skin_folder = ps._getOb('erp5_geek', None) - self.assertNotEquals(skin_folder, None) + self.assertIsNotNone(skin_folder) form_id = sequence.get('form_id') form = skin_folder._getOb(form_id, None) form_title = 'First Form Title' form.title = form_title - self.assertNotEquals(form, None) + self.assertIsNotNone(form) self.assertEqual(sorted(form.get_groups(include_empty=1)), sorted(['left', 'right', 'center', 'bottom', 'hidden'])) group_dict = {} @@ -891,7 +884,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): def stepRevertFormTitle(self, sequence=None): ps = self.getSkinsTool() skin_folder = ps._getOb('erp5_geek', None) - self.assertNotEquals(skin_folder, None) + self.assertIsNotNone(skin_folder) form_id = sequence.get('form_id') form = skin_folder._getOb(form_id, None) form_title = 'Second Form Title' @@ -900,7 +893,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): def stepCheckFormTitle(self, sequence=None): ps = self.getSkinsTool() skin_folder = ps._getOb('erp5_geek', None) - self.assertNotEquals(skin_folder, None) + self.assertIsNotNone(skin_folder) form_id = sequence.get('form_id') form = skin_folder._getOb(form_id, None) self.assertEqual('First Form Title', form.title) @@ -909,7 +902,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): """Check the form is exist in erp5_geek.""" ps = self.getSkinsTool() skin_folder = ps._getOb('erp5_geek', None) - self.assertNotEquals(skin_folder, None) + self.assertIsNotNone(skin_folder) form_id = sequence.get('form_id') form = skin_folder._getOb(form_id, None) self.assertEqual(form, None) @@ -918,19 +911,19 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): """Check the form is not exist in erp5_nerd.""" ps = self.getSkinsTool() skin_folder = ps._getOb('erp5_nerd', None) - self.assertNotEquals(skin_folder, None) + self.assertIsNotNone(skin_folder) form_id = sequence.get('form_id') form = skin_folder._getOb(form_id, None) - self.assertNotEquals(form, None) + self.assertIsNotNone(form) def stepRemoveFormField(self, sequence=None): """Remove a field from an ERP5 Form.""" ps = self.getSkinsTool() skin_folder = ps._getOb('erp5_geek', None) - self.assertNotEquals(skin_folder, None) + self.assertIsNotNone(skin_folder) form_id = sequence.get('form_id') form = skin_folder._getOb(form_id, None) - self.assertNotEquals(form, None) + self.assertIsNotNone(form) field_id = sequence.get('field_id') field = form.get_field(field_id) self.assertNotEquals(field, None) @@ -941,10 +934,10 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): """Check the groups of an ERP5 Form.""" ps = self.getSkinsTool() skin_folder = ps._getOb('erp5_geek', None) - self.assertNotEquals(skin_folder, None) + self.assertIsNotNone(skin_folder) form_id = sequence.get('form_id') form = skin_folder._getOb(form_id, None) - self.assertNotEquals(form, None) + self.assertIsNotNone(form) group_dict = sequence.get('group_dict') self.assertEqual(sorted(form.get_groups(include_empty=1)), sorted(group_dict.iterkeys())) @@ -958,10 +951,10 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): """Check that field title is not removed form erp5_nerd.""" ps = self.getSkinsTool() skin_folder = ps._getOb('erp5_nerd', None) - self.assertNotEquals(skin_folder, None) + self.assertIsNotNone(skin_folder) form_id = sequence.get('form_id') form = skin_folder._getOb(form_id, None) - self.assertNotEquals(form, None) + self.assertIsNotNone(form) title_field =form._getOb('my_title', None) self.assertNotEquals(title_field, None) @@ -1185,9 +1178,8 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): base_category = pc._getOb(bc_id, None) self.assertTrue(base_category is not None) category_list = [] - for i in xrange(10): + for _ in xrange(10): category = base_category.newContent(portal_type='Category') - self.assertTrue(category is not None) category_list.append(category.getId()) sequence.edit(category_id_list=category_list) @@ -1253,9 +1245,8 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): self.assertTrue(category is not None) subcategory_list = [] subcategory_uid_dict = {} - for i in xrange(10): + for _ in xrange(10): subcategory = category.newContent(portal_type='Category', title='toto') - self.assertTrue(subcategory is not None) subcategory_list.append(subcategory.getId()) subcategory_uid_dict[subcategory.getId()] = subcategory.getUid() sequence.edit(subcategory_id_list=subcategory_list, \ @@ -1430,8 +1421,8 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): wf_id = sequence.get('workflow_id') tt = self.getPortal()['portal_trash'] self.assertEqual(len(tt.objectIds()), 1) - bin = tt.objectValues()[0] - self.assertNotEqual(len(bin.portal_workflow_items[wf_id].objectIds()), 0) + trash_bin = tt.objectValues()[0] + self.assertNotEqual(len(trash_bin.portal_workflow_items[wf_id].objectIds()), 0) # Actions def stepCreateFirstAction(self, sequence=None, **kw): @@ -1666,11 +1657,11 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): self.assertIn(method_id, catalog.sql_uncatalog_object) # check filter filter_dict = catalog._getFilterDict() - filter = filter_dict[method_id] - self.assertItemsEqual(filter['expression_cache_key'], ['portal_type']) - self.assertEqual(filter['type'], []) - self.assertEqual(filter['filtered'], 1) - self.assertEqual(filter['expression'], 'python: context.isPredicate()') + filter_ = filter_dict[method_id] + self.assertItemsEqual(filter_['expression_cache_key'], ['portal_type']) + self.assertEqual(filter_['type'], []) + self.assertEqual(filter_['filtered'], 1) + self.assertEqual(filter_['expression'], 'python: context.isPredicate()') def stepCheckUpdatedCatalogMethodExists(self, sequence=None, **kw): pc = self.getCatalogTool() @@ -1683,11 +1674,11 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): self.assertIn(method_id, catalog.sql_uncatalog_object) # check filter filter_dict = catalog._getFilterDict() - filter = filter_dict[method_id] - self.assertItemsEqual(filter['expression_cache_key'], ['portal_type']) - self.assertEqual(filter['type'], []) - self.assertEqual(filter['filtered'], 1) - self.assertEqual(filter['expression'], 'python: context.isDelivery()') + filter_ = filter_dict[method_id] + self.assertItemsEqual(filter_['expression_cache_key'], ['portal_type']) + self.assertEqual(filter_['type'], []) + self.assertEqual(filter_['filtered'], 1) + self.assertEqual(filter_['expression'], 'python: context.isDelivery()') def stepCheckCatalogMethodRemoved(self, sequence=None, **kw): """ @@ -1703,7 +1694,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): self.assertNotIn(method_id, catalog.sql_uncatalog_object) # check filter with self.assertRaises(KeyError): - catalog._getFilterDict()[method_id] + _ = catalog._getFilterDict()[method_id] def stepRemoveCatalogMethod(self, sequence=None, **kw): """ @@ -1724,7 +1715,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): self.assertNotIn(method_id, catalog.sql_uncatalog_object) # remove filter with self.assertRaises(KeyError): - catalog._getFilterDict()[method_id] + _ = catalog._getFilterDict()[method_id] # Related key, Result key and table, and others def stepCreateKeysAndTable(self, sequence=list, **kw): @@ -2391,9 +2382,9 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): Add Property Sheet to Business Template """ bt = sequence.get('current_bt', None) - self.assertTrue(bt is not None) + self.assertIsNotNone(bt) ps_title = sequence.get('ps_title', None) - self.assertTrue(ps_title is not None) + self.assertIsNotNone(ps_title) bt.edit(template_property_sheet_id_list=[ps_title]) def stepCheckPropertySheetMigration(self, sequence=None, **kw): @@ -2413,19 +2404,11 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): """ Remove Property Sheet """ - ps_title = sequence.get('ps_title', None) ps_path = sequence.get('ps_path', None) - self.assertTrue(ps_path is not None) + self.assertIsNotNone(ps_path) self.assertTrue(os.path.exists(ps_path)) os.remove(ps_path) self.assertFalse(os.path.exists(ps_path)) - return - # Property Sheet will not be installed in file sytem - self.assertFalse(os.path.exists(ps_path)) - # Property Sheet will be installed in ZODB - self.assertTrue(getattr(self.portal.portal_property_sheets, ps_title, None) is not None) - self.portal.portal_property_sheets.manage_delObjects([ps_title]) - self.assertFalse(getattr(self.portal.portal_property_sheets, ps_title, None) is not None) def stepRemovePropertySheetFromZODB(self, sequence=None, sequencer_list=None, **kw): """ @@ -2433,7 +2416,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): """ ps_title = sequence.get('ps_title', None) ps_path = sequence.get('ps_path', None) - self.assertTrue(ps_path is not None) + self.assertIsNotNone(ps_path) # Property Sheet will not be installed in file sytem self.assertFalse(os.path.exists(ps_path)) # Property Sheet will be installed in ZODB @@ -2447,7 +2430,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): """ ps_title = sequence.get('ps_title', None) ps_path = sequence.get('ps_path', None) - self.assertTrue(ps_path is not None) + self.assertIsNotNone(ps_path) # Property Sheet will not be installed in file sytem self.assertFalse(os.path.exists(ps_path)) # Property Sheet will be installed in ZODB @@ -2458,7 +2441,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): Check deletion of Property Sheet """ ps_path = sequence.get('ps_path', None) - self.assertTrue(ps_path is not None) + self.assertIsNotNone(ps_path) self.assertFalse(os.path.exists(ps_path)) def stepCheckMigratedPropertySheetRemoved(self, sequence=None, **kw): @@ -2492,7 +2475,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): """ ps_title = sequence.get('ps_title', None) ps_path = sequence.get('ps_path', None) - self.assertTrue(ps_path is not None) + self.assertIsNotNone(ps_path) # Property Sheet will not be installed in file sytem self.assertFalse(os.path.exists(ps_path)) # Property Sheet will be installed in ZODB @@ -2696,7 +2679,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): for item_name in item_list: item = getattr(bt, item_name) if item is not None: - for key, data in item._objects.items(): + for data in item._objects.itervalues(): if hasattr(data, '__ac_local_roles__'): self.assertTrue(data.__ac_local_roles__ is None) if hasattr(data, '_owner'): @@ -2796,7 +2779,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): self.assertTrue(p._getOb('portal_simulation', None) is None) def stepCheckSimulationToolExists(self, sequence=None, **kw): - self.assertTrue(self.getSimulationTool() is not None) + self.assertIsNotNone(self.getSimulationTool()) def stepCheckSubobjectsNotIncluded(self, sequence=None, **kw): """Check subobjects are not included in the base category. @@ -2806,30 +2789,19 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): # XXX maybe too low level base_category_obj = bt._category_item._objects.get( 'portal_categories/%s' % base_category_id) - self.assertTrue(base_category_obj is not None) + self.assertIsNotNone(base_category_obj) self.assertEqual(len(base_category_obj.objectIds()), 0) def stepCheckNoMissingDependencies(self, sequence=None, **kw): """ Check if bt has no missing dependency """ - missing_dep = False - bt = sequence.get('current_bt') - try: - bt.checkDependencies() - except: - missing_dep = True - self.assertTrue(not missing_dep) + sequence['current_bt'].checkDependencies() def stepCheckMissingDependencies(self, sequence=None, **kw): """ Check if bt has missing dependency """ - missing_dep = False - bt = sequence.get('current_bt') - try: - bt.checkDependencies() - except: - missing_dep = True - self.assertTrue(missing_dep) + with self.assertRaises(Exception): + sequence['current_bt'].checkDependencies() def stepAddDependency(self, sequence=None, **kw): """ Add a dependency to the business template @@ -2992,7 +2964,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): new_value = [] workflow_chain_list = list(bt.getTemplatePortalTypeWorkflowChainList()) for workflow_chain in workflow_chain_list: - portal_type, wkflow_id = workflow_chain.split(' | ') + _, wkflow_id = workflow_chain.split(' | ') if wkflow_id != workflow_id: new_value.append(workflow_chain) bt.edit(template_portal_type_workflow_chain_list=new_value) @@ -3018,8 +2990,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): """ Add type role to business template """ - bt = sequence.get('current_bt', None) - self.assertTrue(bt is not None) + bt = sequence['current_bt'] ptype_ids = [] ptype_ids.append(sequence.get('object_ptype_id', '')) ptype_ids.append(sequence.get('module_ptype_id', '')) @@ -3069,7 +3040,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor): def stepCreateFakeZODBScript(self, sequence=None, **kw): """Create a Script inside portal_skins """ - grain_of_sand = ''.join([random.choice(string.ascii_letters) for i in xrange(10)]) + grain_of_sand = ''.join([random.choice(string.ascii_letters) for _ in xrange(10)]) python_script_id = 'ERP5Site_dummyScriptWhichRandomId%s' % grain_of_sand skin_folder_id = 'custom' if getattr(self.portal.portal_skins, skin_folder_id, None) is None: @@ -6765,7 +6736,7 @@ class TestBusinessTemplate(BusinessTemplateMixin): """ # Simulate the case where we have an installed business template providing # the path test_document - new_object = self.portal.newContent(portal_type='File', id='test_document') + self.portal.newContent(portal_type='File', id='test_document') bt = self.portal.portal_templates.newContent( portal_type='Business Template', @@ -7150,12 +7121,10 @@ class TestBusinessTemplate(BusinessTemplateMixin): bt.edit(template_registered_version_priority_selection_list=()) def stepCheckVersionPrioritySetOnSite(self, sequence=None, **kw): - bt = sequence.get('current_bt') self.assertEqual(self.getPortalObject().getVersionPriorityList(), sequence['expected_version_priority_list']) def stepCheckVersionPriorityRemovedFromSite(self, sequence=None, **kw): - bt = sequence.get('current_bt') self.assertEqual(self.getPortalObject().getVersionPriorityList(), ('erp5 | 0.0',)) @@ -7341,8 +7310,7 @@ class TestBusinessTemplate(BusinessTemplateMixin): self.commit() self.portal.organisation_module.manage_delObjects(['1']) - broken = self.portal.organisation_module.newContent( - portal_type='Mock Broken Organisation', id='1') + self.portal.organisation_module.newContent(portal_type='Mock Broken Organisation', id='1') self.commit() self.tic() # triger undex/index the document diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBusinessTemplate.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBusinessTemplate.xml index f5bbeace7698ca2fa7dffae14b1f682e2cc5bda8..f4e7e22f27d7c938e481b0827e55153cf15d526b 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBusinessTemplate.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBusinessTemplate.xml @@ -49,51 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 68, 2: Arguments number differs from overridden \'_catch_log_errors\' method (arguments-differ)</string> - <string>W: 85, 2: Arguments number differs from overridden \'_ignore_log_errors\' method (arguments-differ)</string> - <string>W:135, 10: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:427, 8: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:618, 6: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:606, 4: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:617, 8: Unused variable \'i\' (unused-variable)</string> - <string>W:642, 6: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:641, 8: Unused variable \'i\' (unused-variable)</string> - <string>W:696, 6: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:709, 6: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:1191, 8: Unused variable \'i\' (unused-variable)</string> - <string>W:1259, 8: Unused variable \'i\' (unused-variable)</string> - <string>W:1337, 10: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:1353, 10: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:1366, 10: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:1377, 10: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:1389, 10: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:1389, 14: Unused variable \'wf_ids\' (unused-variable)</string> - <string>W:1445, 10: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:1477, 4: Redefining built-in \'bin\' (redefined-builtin)</string> - <string>W:1713, 4: Redefining built-in \'filter\' (redefined-builtin)</string> - <string>W:1730, 4: Redefining built-in \'filter\' (redefined-builtin)</string> - <string>W:1750, 6: Expression "catalog._getFilterDict()[method_id]" is assigned to nothing (expression-not-assigned)</string> - <string>W:1771, 6: Expression "catalog._getFilterDict()[method_id]" is assigned to nothing (expression-not-assigned)</string> - <string>W:2468, 4: Unreachable code (unreachable)</string> - <string>W:2743, 12: Unused variable \'key\' (unused-variable)</string> - <string>W:2863, 4: No exception type(s) specified (bare-except)</string> - <string>W:2874, 4: No exception type(s) specified (bare-except)</string> - <string>W:2968, 10: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:2998, 10: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:2998, 14: Unused variable \'wf_ids\' (unused-variable)</string> - <string>W:3013, 10: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:3013, 14: Unused variable \'wf_ids\' (unused-variable)</string> - <string>W:3028, 10: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:3066, 6: Unused variable \'portal_type\' (unused-variable)</string> - <string>W:3143, 69: Unused variable \'i\' (unused-variable)</string> - <string>W:6460, 8: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:6855, 4: Unused variable \'new_object\' (unused-variable)</string> - <string>W:7169, 4: Unused variable \'bt\' (unused-variable)</string> - <string>W:7174, 4: Unused variable \'bt\' (unused-variable)</string> - <string>W:7360, 4: Unused variable \'broken\' (unused-variable)</string> - <string>W: 45, 0: Unused import gc (unused-import)</string> - </tuple> + <tuple/> </value> </item> <item> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCache.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCache.py index f0f9339769c5b379f6c72904d28a766f7cc7092f..ef001bb0be7943058ad23cd2bf3e1e467edac497 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCache.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCache.py @@ -65,8 +65,7 @@ class TestRamCache(ERP5TypeTestCase): test_scopes.sort() ## remove DistributedRamCache since it's a flat storage - filtered_cache_plugins = filter( - lambda x: not isinstance(x, DistributedRamCache), self.cache_plugins) + filtered_cache_plugins = [x for x in self.cache_plugins if not isinstance(x, DistributedRamCache)] for cache_plugin in filtered_cache_plugins: if not self.quiet: diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCache.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCache.xml index 064a4d4de1e8edc3fbed12d66e0b3afebca2a377..eb364599b40c67ef21d9d430f5c9df6e112a51dc 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCache.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCache.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testCache</string> </value> @@ -43,9 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 68, 29: map/filter on lambda could be replaced by comprehension (deprecated-lambda)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -55,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -74,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -83,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCacheTool.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCacheTool.py index 13f2944516ba1eb5b8043bcdd38b1fd8acfd1fbb..9f3ea4f7516c3b0f63442429d55717b4246a4b52 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCacheTool.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCacheTool.py @@ -65,7 +65,7 @@ class TestCacheTool(ERP5TypeTestCase): self.createCachedMethod() self.commit() - def login(self): + def login(self): # pylint:disable=arguments-differ uf = self.portal.acl_users uf._doAddUser('admin', '', ['Manager'], []) uf._doAddUser('ERP5TypeTestCase', '', ['Manager'], []) diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCacheTool.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCacheTool.xml index 7b4903a1b20b64c92f7db303dc6156b3e7179faa..a201ae4425e4b82554458ac0d8e4a81379f9bc31 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCacheTool.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCacheTool.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testCacheTool</string> </value> @@ -43,9 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 68, 2: Arguments number differs from overridden \'login\' method (arguments-differ)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -55,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -74,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -83,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCachedSkinsTool.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCachedSkinsTool.py index ea67cc276344bbbc40e1e76e7068dee1ef2bc554..3bcb34b78183678f0daab0da651c8d4f0181e7eb 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCachedSkinsTool.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCachedSkinsTool.py @@ -57,7 +57,7 @@ class TestCachedSkinsTool(ERP5TypeTestCase): # Use None as skinname to keep using the default one. self.getSkinnableObject().changeSkin(skinname=None) - def login(self): + def login(self): # pylint:disable=arguments-differ uf = self.portal.acl_users uf._doAddUser('vincent', '', ['Manager'], []) user = uf.getUserById('vincent').__of__(uf) diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCachedSkinsTool.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCachedSkinsTool.xml index 2428d05c812876396d6dfde5274a69348997e7a6..7a1341d590051104e4290969cc18f5a9c6682bfa 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCachedSkinsTool.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testCachedSkinsTool.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testCachedSkinsTool</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5Type.tests.testCachedSkinsTool</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testCachedSkinsTool</string> </value> @@ -37,9 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 60, 2: Arguments number differs from overridden \'login\' method (arguments-differ)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -49,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -68,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -77,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testConstraint.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testConstraint.py index dcca11c01ab123504726f5c4de97ba90b3dad727..78cf2aa3b173e4ffeb88838f879295baab75ea6f 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testConstraint.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testConstraint.py @@ -49,7 +49,7 @@ class TestConstraint(PropertySheetTestCase): """ return ('erp5_base',) - def login(self): + def login(self): # pylint:disable=arguments-differ uf = self.portal.acl_users uf._doAddUser('rc', '', ['Manager'], []) user = uf.getUserById('rc').__of__(uf) @@ -114,26 +114,24 @@ class TestConstraint(PropertySheetTestCase): Create a object which will be tested. """ module = self.portal.getDefaultModule(self.object_portal_type) - object = module.newContent(portal_type=self.object_portal_type) - group1 = object.portal_categories.restrictedTraverse('group/testGroup1') + document = module.newContent(portal_type=self.object_portal_type) + group1 = document.portal_categories.restrictedTraverse('group/testGroup1') if sequence: sequence.edit( - object=object, + document=document, group=group1, ) - return object + return document def stepSetObjectGroup(self, sequence=None, sequence_list=None, **kw): """ Set a group to object """ - object = sequence.get('object') -# group1 = object.portal_categories.restrictedTraverse('group/testGroup1') -# object.edit(group_value=group1) - object.edit(group='testGroup1') + document = sequence.get('document') + document.edit(group='testGroup1') self.assertNotEqual( - object.getGroup(portal_type=()), + document.getGroup(portal_type=()), None ) def stepSetObjectGroupOrganisation(self, sequence=None, @@ -141,11 +139,11 @@ class TestConstraint(PropertySheetTestCase): """ Set a group to object, forcing portal_type color to Organisation """ - object = sequence.get('object') - object.setGroup(object.getRelativeUrl(), + document = sequence.get('document') + document.setGroup(document.getRelativeUrl(), portal_type='Organisation') self.assertNotEqual( - object.getGroup(portal_type='Organisation'), + document.getGroup(portal_type='Organisation'), None ) def stepSetObjectGroupList(self, sequence=None, @@ -153,68 +151,65 @@ class TestConstraint(PropertySheetTestCase): """ Set a group to object """ - object = sequence.get('object') -# group1 = object.portal_categories.restrictedTraverse('group/testGroup1') -# group2 = object.portal_categories.restrictedTraverse('group/testGroup2') -# object.edit(group_value_list=[group1, group2]) - object.edit(group_list=['testGroup1', 'testGroup2']) + document = sequence.get('document') + document.edit(group_list=['testGroup1', 'testGroup2']) def stepSetObjectTitle(self, sequence=None, sequence_list=None, **kw): """ Set a different title value """ - object = sequence.get('object') + document = sequence.get('document') object_title = self.object_title - object.setTitle(object_title) + document.setTitle(object_title) def stepSetObjectNoneTitle(self, sequence=None, sequence_list=None, **kw): """ Set a different title value """ - object = sequence.get('object') + document = sequence.get('document') # Do not call edit, as we want to explicitely modify the property # (and edit modify only if value is different) - object.setTitle(None) + document.setTitle(None) def stepSetObjectEmptyTitle(self, sequence=None, sequence_list=None, **kw): """ Set a different title value """ - object = sequence.get('object') + document = sequence.get('document') # Do not call edit, as we want to explicitely modify the property # (and edit modify only if value is different) - object.setTitle('') + document.setTitle('') def stepSetObjectIntTitle(self, sequence=None, sequence_list=None, **kw): """ Set a different title value """ - object = sequence.get('object') - object.edit(title=12345) + document = sequence.get('document') + document.edit(title=12345) def stepSetObjectBadTypedProperty(self, sequence=None, sequence_list=None, **kw): """ Set a property with a bad type """ - object = sequence.get('object') + document = sequence.get('document') property_name = 'ean13code' - # make sure the property is defined on the object - self.assertTrue(not object.hasProperty(property_name)) - self.assertTrue(object.getPropertyType(property_name) != 'int') - object.setProperty(property_name, 12) + # make sure the property is defined on the document + self.assertTrue(not document.hasProperty(property_name)) + self.assertTrue(document.getPropertyType(property_name) != 'int') + document.setProperty(property_name, 12) def stepSetObjectIntLocalProperty(self, sequence=None, sequence_list=None, **kw): """ - Set a local property on the object, with an int type. + Set a local property on the document, with an int type. """ - object = sequence.get('object') - object.edit(local_prop = 12345) + document = sequence.get('document') + document.edit(local_prop = 12345) def _createGenericConstraint(self, sequence=None, klass_name='Constraint', **kw): @@ -225,9 +220,7 @@ class TestConstraint(PropertySheetTestCase): module = Constraint file_path = "%s.%s" % (module.__name__, klass_name) __import__(file_path) - file = getattr(module, klass_name) - klass = file -# klass = getattr(file, klass_name) + klass = getattr(module, klass_name) constraint = klass(**kw) if sequence is not None: sequence.edit(constraint=constraint,) @@ -238,10 +231,10 @@ class TestConstraint(PropertySheetTestCase): """ Call checkConsistency of a Constraint. """ - object = sequence.get('object') + document = sequence.get('document') constraint = sequence.get('constraint') # Check - error_list = constraint.checkConsistency(object) + error_list = constraint.checkConsistency(document) sequence.edit( error_list=error_list ) @@ -251,10 +244,10 @@ class TestConstraint(PropertySheetTestCase): """ Call checkConsistency of a Constraint, fixing the errors. """ - object = sequence.get('object') + document = sequence.get('document') constraint = sequence.get('constraint') # Check - error_list = constraint.checkConsistency(object, fixit=1) + error_list = constraint.checkConsistency(document, fixit=1) sequence.edit( error_list=error_list ) @@ -264,10 +257,10 @@ class TestConstraint(PropertySheetTestCase): """ Call checkConsistency of a Constraint. """ - object = sequence.get('group') + document = sequence.get('group') constraint = sequence.get('constraint') # Check - error_list = constraint.checkConsistency(object) + error_list = constraint.checkConsistency(document) sequence.edit( error_list=error_list ) @@ -1327,8 +1320,8 @@ class TestConstraint(PropertySheetTestCase): """ Create a Content Object inside one Object """ - object = sequence.get('object') - content_object = object.newContent(portal_type=self.object_content_portal_type) + document = sequence.get('document') + content_object = document.newContent(portal_type=self.object_content_portal_type) sequence.edit( content_object = content_object, ) @@ -1373,20 +1366,20 @@ class TestConstraint(PropertySheetTestCase): """ Set valid Title to Object """ - object = sequence.get('object') - object.setTitle(self.object_title) + document = sequence.get('document') + document.setTitle(self.object_title) sequence.edit( - object = object, + document = document, ) def stepSetObjectTitle1(self, sequence=None, sequence_list=None, **kw): """ Set empty (or invalid string) to Object """ - object = sequence.get('object') - object.setTitle(' ') + document = sequence.get('document') + document.setTitle(' ') sequence.edit( - object = object, + document = document, ) def test_StringAttributeMatchConstraint(self): @@ -1527,13 +1520,13 @@ class TestConstraint(PropertySheetTestCase): def stepValidateObject(self, sequence=None, sequence_list=None, **kw): """ """ - document = sequence.get('object') + document = sequence.get('document') document.validate() def stepInvalidateObject(self, sequence=None, sequence_list=None, **kw): """ """ - document = sequence.get('object') + document = sequence.get('document') document.invalidate() def stepCreateAttributeUnicityConstraint(self, sequence=None, diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testConstraint.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testConstraint.xml index 590159c0330316c2eca267e18fff61e56cfc34ea..96de3609cb3044676d3665557f9db4605095dee7 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testConstraint.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testConstraint.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testConstraint</string> </value> @@ -43,26 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 52, 2: Arguments number differs from overridden \'login\' method (arguments-differ)</string> - <string>W:117, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:131, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:144, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:156, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:167, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:176, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:186, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:196, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:204, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:216, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:228, 4: Redefining built-in \'file\' (redefined-builtin)</string> - <string>W:241, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:254, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:267, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:1330, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:1376, 4: Redefining built-in \'object\' (redefined-builtin)</string> - <string>W:1386, 4: Redefining built-in \'object\' (redefined-builtin)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -72,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -91,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -100,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Category.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Category.py index 64136e45a1551c12b8ed4cf61cfca59d1099ee74..9b3b4c371f48e450574ec9fe04afcb2bc1466689 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Category.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Category.py @@ -28,7 +28,7 @@ import unittest from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase -from AccessControl.SecurityManagement import newSecurityManager + class TestERP5Category(ERP5TypeTestCase): @@ -64,7 +64,6 @@ class TestERP5Category(ERP5TypeTestCase): return self.getSalePackingListModule()['1'] def afterSetUp(self): - self.login() # This add the base category size portal_categories = self.getCategoryTool() person_module = self.getPersonModule() @@ -155,12 +154,6 @@ class TestERP5Category(ERP5TypeTestCase): self.commitAndTic() - def login(self): - uf = self.getPortal().acl_users - uf._doAddUser('seb', '', ['Manager'], []) - user = uf.getUserById('seb').__of__(uf) - newSecurityManager(None, user) - def commitAndTic(self): """Just to save one line. """ diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Category.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Category.xml index 2f9810f482e0aa0bf2d8eef6d7c6facdb8b3fbed..0ae17651a3ce8dd2e3d6342d267c21cdbfe561c4 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Category.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Category.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testERP5Category</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5.tests.testERP5Category</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testERP5Category</string> </value> @@ -37,9 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W:158, 2: Arguments number differs from overridden \'login\' method (arguments-differ)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -49,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -68,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -77,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Core.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Core.py index edead29acb8bdb464ef6c22620495acfdb36a648..d81dc0de60a29a59111d79ad24510726f541b3d4 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Core.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Core.py @@ -65,7 +65,7 @@ if 1: # BBB *args, **kw) def setGlobalTranslationService(translation_service): - global global_translation_service + global global_translation_service # pylint:disable=global-statement global_translation_service = translation_service zope.component.provideUtility(DummyTranslationDomainFallback, provides=IFallbackTranslationDomainFactory) @@ -578,9 +578,8 @@ class TestERP5Core(ERP5TypeTestCase, ZopeTestCase.Functional): 0 != i.getUid() != i.getProperty('uid')]) def test_04_site_manager_and_translation_migration(self): - from zope.site.hooks import getSite, setSite + from zope.site.hooks import setSite from zope.component import queryUtility - from zope.i18n.interfaces import ITranslationDomain # check translation is working normaly erp5_ui_catalog = self.portal.Localizer.erp5_ui self.assertEqual(queryUtility(ITranslationDomain, 'erp5_ui'), diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Core.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Core.xml index a7ca02df76c2c5552520496c7e4fcdfc207ca3f0..427bc219cacc332ea5696945020b4f16153fa9ef 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Core.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Core.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testERP5Core</string> </value> @@ -43,10 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 67, 4: Using the global statement (global-statement)</string> - <string>W:578, 4: Redefining name \'ITranslationDomain\' from outer scope (line 53) (redefined-outer-name)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -56,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -75,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -84,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.py index 781b7acd57c1a36af775d98b40fa42a24740c36b..4b7dfe90641ce6dd207ce57f593be4a990eede53 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.py @@ -99,8 +99,6 @@ class TestERP5Workflow(ERP5TypeTestCase): transition2.setReference('transition2') state1.setDestinationValueList([transition1, transition2]) - self.portal.portal_types.Folder.setTypeWorkflowList(['wf']) - doc = self.portal.newContent(portal_type='Folder', id='test_doc') self.assertEqual([transition1, transition2], state1.getDestinationValueList()) @@ -231,6 +229,7 @@ class TestERP5Workflow(ERP5TypeTestCase): """ workflow = self.workflow_module.newContent(portal_type='Workflow') state = workflow.newContent(portal_type='Workflow State', title='Some State') + state.Base_viewDict() transition = workflow.newContent(portal_type='Workflow Transition', title='Some Transition') transition.setReference('change_something') diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.xml index 45ceb964ac3db33fb90b1a96a6d0380baacbe8f0..520de6c85ca58492eff16d2db44efa597258f236 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testERP5Workflow</string> </value> @@ -53,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -72,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -81,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolder.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolder.py index 46e41591d0a19edaa3bc50cb73ad884a993e08d0..71313c7362b66fac4f9462560a99050c5914a5cc 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolder.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolder.py @@ -40,261 +40,261 @@ from zExceptions import Unauthorized class TestFolder(ERP5TypeTestCase, LogInterceptor): - # Some helper methods + # Some helper methods - def getTitle(self): - return "Folder" + def getTitle(self): + return "Folder" - def getBusinessTemplateList(self): - """ - Return the list of business templates. - """ - return tuple() + def getBusinessTemplateList(self): + """ + Return the list of business templates. + """ + return tuple() - def afterSetUp(self): - """ - Executed before each test_*. - """ - self.login() - self.folder = self.portal.newContent(id='TestFolder', - portal_type='Folder') - self.other_folder = self.portal.newContent( - id='OtherTestFolder', portal_type='Folder') + def afterSetUp(self): + """ + Executed before each test_*. + """ + self.login() + self.folder = self.portal.newContent(id='TestFolder', + portal_type='Folder') + self.other_folder = self.portal.newContent( + id='OtherTestFolder', portal_type='Folder') - def beforeTearDown(self): - """ - Executed after each test_*. - """ - self.portal.manage_delObjects(ids=[self.folder.getId(), - self.other_folder.getId()]) - clearCache() - self.commit() + def beforeTearDown(self): + """ + Executed after each test_*. + """ + self.portal.manage_delObjects(ids=[self.folder.getId(), + self.other_folder.getId()]) + clearCache() + self.commit() - def newContent(self): - """ - Create an object in self.folder and return it. - """ - return self.folder.newContent(portal_type='Folder') + def newContent(self): + """ + Create an object in self.folder and return it. + """ + return self.folder.newContent(portal_type='Folder') - def test_01_folderType(self): - """ - Test if the present Folder class is the ERP5 version of Folder, not - CMF's. - """ - self.assertTrue(isinstance(self.getTypesTool()['Folder'], - ERP5TypeInformation)) + def test_01_folderType(self): + """ + Test if the present Folder class is the ERP5 version of Folder, not + CMF's. + """ + self.assertTrue(isinstance(self.getTypesTool()['Folder'], + ERP5TypeInformation)) - def test_02_defaultGenerateNewId(self): - """ - Test the default Id generation method. - Ids are incremented at content creation and start at 1. - """ - # No id generator defined - self.assertEqual(self.folder.getIdGenerator(), '') - self.assertEqual(len(self.folder), 0) - obj = self.newContent() - self.assertEqual(obj.getId(), '1') - obj = self.newContent() - self.assertEqual(obj.getId(), '2') + def test_02_defaultGenerateNewId(self): + """ + Test the default Id generation method. + Ids are incremented at content creation and start at 1. + """ + # No id generator defined + self.assertEqual(self.folder.getIdGenerator(), '') + self.assertEqual(len(self.folder), 0) + obj = self.newContent() + self.assertEqual(obj.getId(), '1') + obj = self.newContent() + self.assertEqual(obj.getId(), '2') - def test_03_customGenerateNewId(self): - """ - Test that id_generator property is honored. - """ - id_generator_script_name = 'testIdGenerator' - id_generator_id_list = ['first_id', 'second_id'] - createZODBPythonScript(self.portal.portal_skins.erp5_core, - id_generator_script_name, '', - 'return %s[len(context)]' % (repr(id_generator_id_list), )) - self.folder.setIdGenerator(id_generator_script_name) - self.assertEqual(self.folder.getIdGenerator(), id_generator_script_name) - for expected_length in xrange(len(id_generator_id_list)): - self.assertEqual(len(self.folder), expected_length) - obj = self.newContent() - self.assertEqual(obj.getId(), id_generator_id_list[expected_length]) + def test_03_customGenerateNewId(self): + """ + Test that id_generator property is honored. + """ + id_generator_script_name = 'testIdGenerator' + id_generator_id_list = ['first_id', 'second_id'] + createZODBPythonScript(self.portal.portal_skins.erp5_core, + id_generator_script_name, '', + 'return %s[len(context)]' % (repr(id_generator_id_list), )) + self.folder.setIdGenerator(id_generator_script_name) + self.assertEqual(self.folder.getIdGenerator(), id_generator_script_name) + for expected_length in xrange(len(id_generator_id_list)): + self.assertEqual(len(self.folder), expected_length) + obj = self.newContent() + self.assertEqual(obj.getId(), id_generator_id_list[expected_length]) - def test_03_unkownGenerateNewId(self): - self.folder.setIdGenerator('no such method') - self.assertRaises(ValueError, self.folder.generateNewId) - self.assertRaises(ValueError, self.folder.newContent) + def test_03_unkownGenerateNewId(self): + self.folder.setIdGenerator('no such method') + self.assertRaises(ValueError, self.folder.generateNewId) + self.assertRaises(ValueError, self.folder.newContent) - def _setAllowedContentTypesForFolderType(self, allowed_content_type_list): - """Set allowed content types for Folder portal type.""" - self.getTypesTool().Folder.edit( - type_allowed_content_type_list=allowed_content_type_list, - type_filter_content_type=True) + def _setAllowedContentTypesForFolderType(self, allowed_content_type_list): + """Set allowed content types for Folder portal type.""" + self.getTypesTool().Folder.edit( + type_allowed_content_type_list=allowed_content_type_list, + type_filter_content_type=True) - def _assertAllowedContentTypes(self, obj, expected_allowed_content_types): - """Asserts that allowed content types for obj are exactly what we - have in expected_allowed_content_types.""" - self.assertEqual(sorted(expected_allowed_content_types), - sorted(x.getId() for x in obj.allowedContentTypes())) + def _assertAllowedContentTypes(self, obj, expected_allowed_content_types): + """Asserts that allowed content types for obj are exactly what we + have in expected_allowed_content_types.""" + self.assertEqual(sorted(expected_allowed_content_types), + sorted(x.getId() for x in obj.allowedContentTypes())) - def test_AllowedContentTypes(self): - type_list = ['Folder', 'Category', 'Base Category'] - self._setAllowedContentTypesForFolderType(type_list) - self._assertAllowedContentTypes(self.folder, type_list) + def test_AllowedContentTypes(self): + type_list = ['Folder', 'Category', 'Base Category'] + self._setAllowedContentTypesForFolderType(type_list) + self._assertAllowedContentTypes(self.folder, type_list) - def test_AllowedContentTypesCacheExpiration(self): - type_list = ['Folder', 'Category', 'Base Category'] - self._setAllowedContentTypesForFolderType(type_list) - self.folder.manage_permission( - 'Add portal content', roles=[], acquire=0) - self._assertAllowedContentTypes(self.folder, []) - self.folder.manage_permission( - 'Add portal content', roles=['Manager'], acquire=0) - self._assertAllowedContentTypes(self.folder, type_list) + def test_AllowedContentTypesCacheExpiration(self): + type_list = ['Folder', 'Category', 'Base Category'] + self._setAllowedContentTypesForFolderType(type_list) + self.folder.manage_permission( + 'Add portal content', roles=[], acquire=0) + self._assertAllowedContentTypes(self.folder, []) + self.folder.manage_permission( + 'Add portal content', roles=['Manager'], acquire=0) + self._assertAllowedContentTypes(self.folder, type_list) - def test_AllowedContentTypesObjectIndependance(self): - type_list = ['Folder', 'Category', 'Base Category'] - self._setAllowedContentTypesForFolderType(type_list) - self._assertAllowedContentTypes(self.folder, type_list) - self.other_folder.manage_permission( - 'Add portal content', roles=[], acquire=0) - self._assertAllowedContentTypes(self.other_folder, []) - self._assertAllowedContentTypes(self.folder, type_list) + def test_AllowedContentTypesObjectIndependance(self): + type_list = ['Folder', 'Category', 'Base Category'] + self._setAllowedContentTypesForFolderType(type_list) + self._assertAllowedContentTypes(self.folder, type_list) + self.other_folder.manage_permission( + 'Add portal content', roles=[], acquire=0) + self._assertAllowedContentTypes(self.other_folder, []) + self._assertAllowedContentTypes(self.folder, type_list) - def test_NewContentAndAllowedContentTypes(self): - self._setAllowedContentTypesForFolderType(('Folder', )) - self.assertRaises(ValueError, self.folder.newContent, - portal_type='Category') + def test_NewContentAndAllowedContentTypes(self): + self._setAllowedContentTypesForFolderType(('Folder', )) + self.assertRaises(ValueError, self.folder.newContent, + portal_type='Category') - def test_editWithoutModifyPortalContent(self): - edit = guarded_getattr(self.folder, 'edit') - original_permission_list = self.folder.permission_settings('Modify portal content') - assert len(original_permission_list) == 1 - self.folder.manage_permission('Modify portal content', [], 0) - self.assertRaises(Unauthorized, guarded_getattr, self.folder, 'edit') - # Reset to original permissions - self.folder.manage_permission('Modify portal content', original_permission_list[0]['roles'], original_permission_list[0]['acquire']) + def test_editWithoutModifyPortalContent(self): + _ = guarded_getattr(self.folder, 'edit') + original_permission_list = self.folder.permission_settings('Modify portal content') + assert len(original_permission_list) == 1 + self.folder.manage_permission('Modify portal content', [], 0) + self.assertRaises(Unauthorized, guarded_getattr, self.folder, 'edit') + # 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.portal.portal_skins.custom, - "test_upgradeObject", 'x', - 'return [1]') - return self.portal.portal_skins.custom.test_upgradeObject + def _createUpgradeObjectClassPythonScript(self): + """Create a simple python script """ + createZODBPythonScript(self.portal.portal_skins.custom, + "test_upgradeObject", 'x', + 'return [1]') + return self.portal.portal_skins.custom.test_upgradeObject - def test_upgradeObjectClass(self): - """ Test if it changes Object Class """ - 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) - self.commit() - self.assertEqual(self.folder[obj.getId()].__class__, to_class) - self.assertNotEquals(self.folder[obj.getId()].__class__, from_class) - self.assertEqual([1], result) + def test_upgradeObjectClass(self): + """ Test if it changes Object Class """ + 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) + self.commit() + self.assertEqual(self.folder[obj.getId()].__class__, to_class) + self.assertNotEquals(self.folder[obj.getId()].__class__, from_class) + self.assertEqual([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) - self.commit() - self.assertNotEquals(self.folder[obj.getId()].__class__, to_class) - self.assertEqual(self.folder[obj.getId()].__class__, from_class) - self.assertEqual([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) + self.commit() + self.assertNotEquals(self.folder[obj.getId()].__class__, to_class) + self.assertEqual(self.folder[obj.getId()].__class__, from_class) + self.assertEqual([1], result) - def test_upgradeObjectClassHierarchicaly(self): - """ Test if migrate sub objects Hierarchicaly """ - type_list = ['Folder', 'Category', 'Base Category'] - self._setAllowedContentTypesForFolderType(type_list) - subfolder = self.newContent() - obj = subfolder.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) - self.commit() - self.assertEqual(subfolder[obj.getId()].__class__, to_class) - self.assertNotEquals(subfolder[obj.getId()].__class__, from_class) - self.assertEqual([1], result) + def test_upgradeObjectClassHierarchicaly(self): + """ Test if migrate sub objects Hierarchicaly """ + type_list = ['Folder', 'Category', 'Base Category'] + self._setAllowedContentTypesForFolderType(type_list) + subfolder = self.newContent() + obj = subfolder.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) + self.commit() + self.assertEqual(subfolder[obj.getId()].__class__, to_class) + self.assertNotEquals(subfolder[obj.getId()].__class__, from_class) + self.assertEqual([1], result) - def test_upgradeObjectClassWithSubObject(self): - """ Test If upgrade preseve subobjects """ - type_list = ['Folder', 'Category', 'Base Category'] - self._setAllowedContentTypesForFolderType(type_list) - subobject = self.folder.newContent(portal_type="Category") - obj = subobject.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) - self.commit() - self.assertEqual(self.folder[subobject.getId()].__class__, to_class) - self.assertNotEquals(self.folder[subobject.getId()].__class__, from_class) - self.assertEqual(self.folder[subobject.getId()][obj.getId()].__class__, to_class) - self.assertNotEquals(self.folder[subobject.getId()][obj.getId()].__class__, from_class) - self.assertEqual([1, 1], result) + def test_upgradeObjectClassWithSubObject(self): + """ Test If upgrade preseve subobjects """ + type_list = ['Folder', 'Category', 'Base Category'] + self._setAllowedContentTypesForFolderType(type_list) + subobject = self.folder.newContent(portal_type="Category") + obj = subobject.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) + self.commit() + self.assertEqual(self.folder[subobject.getId()].__class__, to_class) + self.assertNotEquals(self.folder[subobject.getId()].__class__, from_class) + self.assertEqual(self.folder[subobject.getId()][obj.getId()].__class__, to_class) + self.assertNotEquals(self.folder[subobject.getId()][obj.getId()].__class__, from_class) + self.assertEqual([1, 1], result) - def test_upgradeObjectClassWithStrings(self): - """ Test if it changes Object Class """ - type_list = ['Folder', 'Category' ] - self._setAllowedContentTypesForFolderType(type_list) - obj = self.folder.newContent(portal_type="Category") - from_class_as_string = 'erp5.portal_type.Category' - to_class_as_string = 'erp5.portal_type.Folder' - from_class = obj.__class__ - to_class = self.folder.__class__ - test_script = self._createUpgradeObjectClassPythonScript() - result = self.folder.upgradeObjectClass(test_script, from_class_as_string, - to_class_as_string, test_script) - self.commit() - self.assertEqual(self.folder[obj.getId()].__class__, to_class) - self.assertNotEquals(self.folder[obj.getId()].__class__, from_class) - self.assertEqual([1], result) + def test_upgradeObjectClassWithStrings(self): + """ Test if it changes Object Class """ + type_list = ['Folder', 'Category' ] + self._setAllowedContentTypesForFolderType(type_list) + obj = self.folder.newContent(portal_type="Category") + from_class_as_string = 'erp5.portal_type.Category' + to_class_as_string = 'erp5.portal_type.Folder' + from_class = obj.__class__ + to_class = self.folder.__class__ + test_script = self._createUpgradeObjectClassPythonScript() + result = self.folder.upgradeObjectClass(test_script, from_class_as_string, + to_class_as_string, test_script) + self.commit() + self.assertEqual(self.folder[obj.getId()].__class__, to_class) + self.assertNotEquals(self.folder[obj.getId()].__class__, from_class) + self.assertEqual([1], result) - def test_FolderMixinSecurity(self): - """ Test if FolderMix methods cannot be called by URL """ - type_list = ['Folder'] - self._setAllowedContentTypesForFolderType(type_list) - obj = self.folder.newContent(portal_type='Folder') - self.commit() - response = self.publish('%s/deleteContent?id=%s' % ( - self.folder.absolute_url(relative=True), obj.getId())) - self.assertTrue(obj.getId() in self.folder.objectIds()) - self.assertEqual(302, response.getStatus()) + def test_FolderMixinSecurity(self): + """ Test if FolderMix methods cannot be called by URL """ + type_list = ['Folder'] + self._setAllowedContentTypesForFolderType(type_list) + obj = self.folder.newContent(portal_type='Folder') + self.commit() + response = self.publish('%s/deleteContent?id=%s' % ( + self.folder.absolute_url(relative=True), obj.getId())) + self.assertTrue(obj.getId() in self.folder.objectIds()) + self.assertEqual(302, response.getStatus()) - def test_fragmentedLength(self): - """Test Folder._count type and behaviour""" - type_list = ['Folder'] - self._setAllowedContentTypesForFolderType(type_list) - folder = self.folder - folder_dict = folder.__dict__ - folder.newContent(portal_type='Folder') - self.assertEqual(len(folder), 1) - self.assertIsInstance(folder_dict['_count'], Length) - original_length_oid = folder_dict['_count']._p_oid - for _ in xrange(FRAGMENTED_LENGTH_THRESHOLD - len(folder) - 1): - folder.newContent(portal_type='Folder') - self.assertEqual(len(folder), FRAGMENTED_LENGTH_THRESHOLD - 1) - self.assertIsInstance(folder_dict['_count'], Length) - # Generate 3 to completely clear the threshold, as we do not care whether - # the change happens when reaching the threshold or when going over it. - folder.newContent(portal_type='Folder') - folder.newContent(portal_type='Folder') + def test_fragmentedLength(self): + """Test Folder._count type and behaviour""" + type_list = ['Folder'] + self._setAllowedContentTypesForFolderType(type_list) + folder = self.folder + folder_dict = folder.__dict__ + folder.newContent(portal_type='Folder') + self.assertEqual(len(folder), 1) + self.assertIsInstance(folder_dict['_count'], Length) + original_length_oid = folder_dict['_count']._p_oid + for _ in xrange(FRAGMENTED_LENGTH_THRESHOLD - len(folder) - 1): folder.newContent(portal_type='Folder') - self.assertEqual(len(folder), FRAGMENTED_LENGTH_THRESHOLD + 2) - fragmented_length = folder_dict['_count'] - self.assertIsInstance(fragmented_length, FragmentedLength) - self.assertEqual(len(fragmented_length._map), 2, fragmented_length._map) - original_length = fragmented_length._map[None] - self.assertEqual(original_length_oid, original_length._p_oid) - self.assertGreater(original_length(), FRAGMENTED_LENGTH_THRESHOLD - 1) - self.assertGreater(len(folder), original_length()) + self.assertEqual(len(folder), FRAGMENTED_LENGTH_THRESHOLD - 1) + self.assertIsInstance(folder_dict['_count'], Length) + # Generate 3 to completely clear the threshold, as we do not care whether + # the change happens when reaching the threshold or when going over it. + folder.newContent(portal_type='Folder') + folder.newContent(portal_type='Folder') + folder.newContent(portal_type='Folder') + self.assertEqual(len(folder), FRAGMENTED_LENGTH_THRESHOLD + 2) + fragmented_length = folder_dict['_count'] + self.assertIsInstance(fragmented_length, FragmentedLength) + self.assertEqual(len(fragmented_length._map), 2, fragmented_length._map) + original_length = fragmented_length._map[None] + self.assertEqual(original_length_oid, original_length._p_oid) + self.assertGreater(original_length(), FRAGMENTED_LENGTH_THRESHOLD - 1) + self.assertGreater(len(folder), original_length()) def test_suite(): suite = unittest.TestSuite() diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolder.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolder.xml index 8f449380d187def3c95b2ba8671d9c9c83badc47..d662ccbbd6a8510381d7696360dcc58ff24ef1be 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolder.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolder.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testFolder</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5Type.tests.testFolder</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testFolder</string> </value> @@ -37,196 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 45, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 46, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 48, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 49, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 52, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 54, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 55, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 58, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 59, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 61, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 64, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 65, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 68, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 70, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 71, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 73, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 74, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 77, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 79, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 80, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 84, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 87, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 88, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 93, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 94, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 95, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 96, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 97, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 98, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:100, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:101, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:104, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:105, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:106, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:109, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:110, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:111, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:112, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string> - <string>W:113, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string> - <string>W:114, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string> - <string>W:116, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:117, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:118, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:119, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:121, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:122, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:123, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:127, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:128, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:130, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:133, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:134, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:135, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:136, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:138, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:139, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:140, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:141, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:143, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:144, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:146, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:148, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:149, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:150, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:151, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:152, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:154, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:155, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:157, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:158, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:159, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:162, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:163, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:164, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:165, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:166, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:167, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:169, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:171, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:172, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:173, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:176, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:179, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:180, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:181, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:182, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:183, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:184, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:185, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:186, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:187, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:189, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:190, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:191, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:192, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:194, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:195, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:196, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:197, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:198, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:199, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:200, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:201, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:202, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:204, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:205, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:206, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:207, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:209, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:210, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:211, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:212, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:213, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:214, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:215, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:216, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:217, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:218, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:220, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:221, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:222, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:223, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:225, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:226, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:227, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:228, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:229, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:230, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:231, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:232, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:233, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:234, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:236, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:237, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:238, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:239, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:240, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:241, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:243, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:244, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:245, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:246, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:247, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:248, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:249, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:250, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:251, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:252, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:253, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:255, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:256, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:257, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:258, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:260, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:261, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:262, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:263, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:264, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:265, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:266, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:268, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:269, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:271, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:272, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:273, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:274, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:275, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:276, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:277, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:278, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:279, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:280, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:281, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:282, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string> - <string>W:283, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:284, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:287, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:288, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:289, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:290, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:291, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:292, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:293, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:294, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:295, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:296, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:297, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:163, 6: Unused variable \'edit\' (unused-variable)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -236,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -255,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -264,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolderMigration.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolderMigration.py index d7301677156c5af046c95f0f4c456027a695f5e2..07a6ace0525246572a20664b44f4cec5110a1880 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolderMigration.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolderMigration.py @@ -36,478 +36,478 @@ from Products.ERP5Type.Cache import clearCache class TestFolderMigration(ERP5TypeTestCase, LogInterceptor): - # Some helper methods - - def getTitle(self): - return "Folder Migration" - - def getBusinessTemplateList(self): - """ - Return the list of business templates. - """ - return tuple() - - def afterSetUp(self): - """ - Executed before each test_*. - """ - self.login() - self.folder = self.portal.newContent(id='TestFolder', - portal_type='Folder') - - def beforeTearDown(self): - """ - Executed after each test_*. - """ - self.folder.manage_delObjects(ids=list(self.folder.objectIds())) - self.portal.manage_delObjects(ids=[self.folder.getId(),]) - clearCache() - self.tic() - - def newContent(self, *args, **kwargs): - """ - Create an object in self.folder and return it. - """ - return self.folder.newContent(portal_type='Folder', *args, **kwargs) - - def test_01_folderIsBtree(self): - """ - Test the folder is a BTree - """ - self.assertRaises(NotImplementedError, self.folder.getTreeIdList) - self.assertEqual(self.folder.isBTree(), True) - self.assertEqual(self.folder.isHBTree(), False) - - def test_02_migrateFolder(self): - """ - migrate folder from btree to hbtree - """ - # Create some objects - self.assertEqual(self.folder.getIdGenerator(), '') - self.assertEqual(len(self.folder), 0) - obj1 = self.newContent() - self.assertEqual(obj1.getId(), '1') - obj2 = self.newContent() - self.assertEqual(obj2.getId(), '2') - obj3 = self.newContent() - self.assertEqual(obj3.getId(), '3') - self.tic() - # call migration script - self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromStopDate", - new_generate_id_method="_generatePerDayId") - self.tic() - # check we now have a hbtree - self.assertEqual(self.folder.isBTree(), False) - self.assertEqual(self.folder.isHBTree(), True) - self.assertEqual(len(self.folder.getTreeIdList()), 1) - self.assertEqual(len(self.folder.objectIds()), 3) - # check params of objectIds in case of hbtree - self.assertEqual(len(self.folder.objectIds(base_id=None)), 0) - self.assertEqual(len(self.folder.objectValues()), 3) - self.assertEqual(len(self.folder.objectValues(base_id=None)), 0) - # check object ids - from DateTime import DateTime - date = DateTime().Date() - date = date.replace("/", "") - self.assertEqual(obj1.getId(), '%s-1' %date) - self.assertEqual(obj2.getId(), '%s-2' %date) - self.assertEqual(obj3.getId(), '%s-3' %date) - # add object and check its id - obj4 = self.newContent() - self.assertEqual(obj4.getId().split('-')[0], date) - - def test_03_emptyFolderIsBtree(self): - """ - Test the folder is a BTree - """ - self.assertRaises(NotImplementedError, self.folder.getTreeIdList) - self.assertEqual(self.folder.isBTree(), True) - self.assertEqual(self.folder.isHBTree(), False) - - def test_03a_filledFolderIsBtree(self): - """ - Test the folder is a BTree - """ - self.folder.newContent() - self.assertRaises(NotImplementedError, self.folder.getTreeIdList) - self.assertEqual(self.folder.isBTree(), True) - self.assertEqual(self.folder.isHBTree(), False) - - def test_04_migrateEmptyFolder(self): - """ - migrate empty folder from btree to hbtree - """ - # Create some objects - self.assertEqual(self.folder.getIdGenerator(), '') - self.assertEqual(len(self.folder), 0) - self.assertEqual(len(self.folder.objectIds()), 0) - # call migration script - self.folder.migrateToHBTree(migration_generate_id_method=None, - new_generate_id_method="_generatePerDayId") - self.tic() - # check we now have a hbtree - self.assertEqual(self.folder.isBTree(), False) - self.assertEqual(self.folder.isHBTree(), True) - self.assertEqual(len(self.folder.objectIds()), 0) - # check new object ids - obj1 = self.newContent() - from DateTime import DateTime - date = DateTime().Date() - date = date.replace("/", "") - self.assertTrue(date in obj1.getId()) - # check we still have a hbtree - self.assertEqual(self.folder.isBTree(), False) - self.assertEqual(self.folder.isHBTree(), True) - self.assertEqual(len(self.folder.objectIds()), 1) - - def test_05_migrateFolderWithoutIdChange(self): - """ - migrate folder from btree to hbtree, do not touch ids - """ - # Create some objects - self.assertEqual(self.folder.getIdGenerator(), '') - self.assertEqual(len(self.folder), 0) - obj1 = self.newContent() - self.assertEqual(obj1.getId(), '1') - obj2 = self.newContent() - self.assertEqual(obj2.getId(), '2') - obj3 = self.newContent() - self.assertEqual(obj3.getId(), '3') - self.tic() - # call migration script with explicit new_generate_id_method (so migration code - # doesn't assign a good default - self.folder.migrateToHBTree(new_generate_id_method='_generateNextId') - self.tic() - # check we now have a hbtree - self.assertEqual(self.folder.isBTree(), False) - self.assertEqual(self.folder.isHBTree(), True) - self.assertEqual(len(self.folder.getTreeIdList()), 1) - self.assertEqual(len(self.folder.objectIds()), 3) - # check params of objectIds in case of hbtree - self.assertEqual(len(self.folder.objectIds(base_id=None)), 3) - self.assertEqual(len(self.folder.objectValues()), 3) - self.assertEqual(len(self.folder.objectValues(base_id=None)), 3) - # check object ids - self.assertEqual(obj1.getId(), '1') - self.assertEqual(obj2.getId(), '2') - self.assertEqual(obj3.getId(), '3') - # add object and check its id - obj4 = self.newContent() - self.assertEqual(obj4.getId(), '4') - - def test_06_migrateFolderChangeIdGenerationMethodLater(self): - """ - migrate folder from btree to hbtree, do not touch ids - """ - # Create some objects - self.assertEqual(self.folder.getIdGenerator(), '') - self.assertEqual(len(self.folder), 0) - obj1 = self.newContent() - self.assertEqual(obj1.getId(), '1') - obj2 = self.newContent() - self.assertEqual(obj2.getId(), '2') - obj3 = self.newContent() - self.assertEqual(obj3.getId(), '3') - self.tic() - # call migration script with explicit new_generate_id_method (so migration code - # doesn't assign a good default - self.folder.migrateToHBTree(new_generate_id_method='_generateNextId') - self.tic() - # check we now have a hbtree - self.assertEqual(self.folder.isBTree(), False) - self.assertEqual(self.folder.isHBTree(), True) - self.assertEqual(len(self.folder.getTreeIdList()), 1) - self.assertEqual(len(self.folder.objectIds()), 3) - # check params of objectIds in case of hbtree - self.assertEqual(len(self.folder.objectIds(base_id=None)), 3) - self.assertEqual(len(self.folder.objectValues()), 3) - self.assertEqual(len(self.folder.objectValues(base_id=None)), 3) - # check object ids - self.assertEqual(obj1.getId(), '1') - self.assertEqual(obj2.getId(), '2') - self.assertEqual(obj3.getId(), '3') - # add object and check its id - obj4 = self.newContent() - self.assertEqual(obj4.getId(), '4') - # set id generator - id_generator_method = '_generatePerDayId' - self.folder.setIdGenerator(id_generator_method) - self.commit() - self.assertEqual(self.folder.getIdGenerator(), id_generator_method) - # check object ids - self.assertEqual(obj1.getId(), '1') - self.assertEqual(obj2.getId(), '2') - self.assertEqual(obj3.getId(), '3') - self.assertEqual(obj4.getId(), '4') - # add object and check its id - from DateTime import DateTime - date = DateTime().Date() - date = date.replace("/", "") - - obj5 = self.newContent() - self.assertEqual(obj5.getId().split('-')[0], date) - - def test_07_migrateFolderTwice(self): - """ - migrate folder twice from btree to hbtree - """ - # Create some objects - self.assertEqual(self.folder.getIdGenerator(), '') - self.assertEqual(len(self.folder), 0) - obj1 = self.newContent() - self.assertEqual(obj1.getId(), '1') - obj2 = self.newContent() - self.assertEqual(obj2.getId(), '2') - obj3 = self.newContent() - self.assertEqual(obj3.getId(), '3') - self.tic() - # call migration script - self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromStopDate", - new_generate_id_method="_generatePerDayId") - self.tic() - # check we now have a hbtree - self.assertEqual(self.folder.isBTree(), False) - self.assertEqual(self.folder.isHBTree(), True) - self.assertEqual(len(self.folder.getTreeIdList()), 1) - self.assertEqual(len(self.folder.objectIds()), 3) - # check params of objectIds in case of hbtree - self.assertEqual(len(self.folder.objectIds(base_id=None)), 0) - self.assertEqual(len(self.folder.objectValues()), 3) - self.assertEqual(len(self.folder.objectValues(base_id=None)), 0) - # check object ids - from DateTime import DateTime - date = DateTime().Date() - date = date.replace("/", "") - self.assertEqual(obj1.getId(), '%s-1' %date) - self.assertEqual(obj2.getId(), '%s-2' %date) - self.assertEqual(obj3.getId(), '%s-3' %date) - # add object and check its id - obj4 = self.newContent() - self.assertEqual(obj4.getId().split('-')[0], date) - # call migration script again - self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromStopDate", - new_generate_id_method="_generatePerDayId") - self.tic() - - # check object ids - self.assertEqual(obj1.getId(), '%s-1' %date) - self.assertEqual(obj2.getId(), '%s-2' %date) - self.assertEqual(obj3.getId(), '%s-3' %date) - self.assertEqual(obj4.getId().split('-')[0], date) - - def test_08_migrateFolderTwiceSimultaneously(self): - """ - migrate folder twice from btree to hbtree, simultaneously - """ - # Create some objects - self.assertEqual(self.folder.getIdGenerator(), '') - self.assertEqual(len(self.folder), 0) - obj1 = self.newContent() - self.assertEqual(obj1.getId(), '1') - obj2 = self.newContent() - self.assertEqual(obj2.getId(), '2') - obj3 = self.newContent() - self.assertEqual(obj3.getId(), '3') - self.tic() - # call migration script twice - self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromStopDate", - new_generate_id_method="_generatePerDayId") - self.commit() - self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromStopDate", - new_generate_id_method="_generatePerDayId") - self.tic() - # check we now have a hbtree - self.assertEqual(self.folder.isBTree(), False) - self.assertEqual(self.folder.isHBTree(), True) - self.assertEqual(len(self.folder.getTreeIdList()), 1) - self.assertEqual(len(self.folder.objectIds()), 3) - # check params of objectIds in case of hbtree - self.assertEqual(len(self.folder.objectIds(base_id=None)), 0) - self.assertEqual(len(self.folder.objectValues()), 3) - self.assertEqual(len(self.folder.objectValues(base_id=None)), 0) - # check object ids - from DateTime import DateTime - date = DateTime().Date() - date = date.replace("/", "") - self.assertEqual(obj1.getId(), '%s-1' %date) - self.assertEqual(obj2.getId(), '%s-2' %date) - self.assertEqual(obj3.getId(), '%s-3' %date) - # add object and check its id - obj4 = self.newContent() - self.assertEqual(obj4.getId().split('-')[0], date) - - def test_09_migrateFolderCreateNewObjectAtOnce(self): - """ - migrate folder from btree to hbtree, create object with base, without any - previous checks - """ - # Create some objects - self.assertEqual(self.folder.getIdGenerator(), '') - self.assertEqual(len(self.folder), 0) - obj1 = self.newContent() - self.assertEqual(obj1.getId(), '1') - obj2 = self.newContent() - self.assertEqual(obj2.getId(), '2') - obj3 = self.newContent() - self.assertEqual(obj3.getId(), '3') - self.tic() - # call migration script - self.folder.migrateToHBTree() - self.tic() - obj4 = self.newContent(id='BASE-123') - self.assertEqual(obj4.getId(), 'BASE-123') - self.assertEqual(len(self.folder.objectIds(base_id=None)), 3) - self.assertEqual(len(self.folder.objectValues()), 4) - self.assertEqual(len(self.folder.objectValues(base_id=None)), 3) - self.assertEqual(len(self.folder.objectIds(base_id='BASE')), 1) - self.assertEqual(len(self.folder.objectValues(base_id='BASE')), 1) - - def test_10_migrateFolderCreateMoreObjectAtOnceDifferentBase(self): - """ - migrate folder from btree to hbtree, create objects with two bases, - without any previous checks - """ - # Create some objects - self.assertEqual(self.folder.getIdGenerator(), '') - self.assertEqual(len(self.folder), 0) - obj1 = self.newContent() - self.assertEqual(obj1.getId(), '1') - obj2 = self.newContent() - self.assertEqual(obj2.getId(), '2') - obj3 = self.newContent() - self.assertEqual(obj3.getId(), '3') - self.tic() - # call migration script - self.folder.migrateToHBTree() - self.tic() - obj4 = self.newContent(id='BASE-123') - obj5 = self.newContent(id='BASE-BELONG-123') - self.assertEqual(obj4.getId(), 'BASE-123') - self.assertEqual(obj5.getId(), 'BASE-BELONG-123') - self.assertEqual(len(self.folder.objectIds(base_id=None)), 3) - self.assertEqual(len(self.folder.objectValues()), 5) - self.assertEqual(len(self.folder.objectValues(base_id=None)), 3) - self.assertEqual(len(self.folder.objectIds(base_id='BASE')), 1) - self.assertEqual(len(self.folder.objectValues(base_id='BASE')), 1) - self.assertEqual(len(self.folder.objectIds(base_id='BASE-BELONG')), 1) - self.assertEqual(len(self.folder.objectValues(base_id='BASE-BELONG')), 1) - - def test_11_folderInMigratedFolderIsBTree(self): - """ - Test the folder in HBTree folder is a BTree - """ - self.folder.migrateToHBTree() - self.tic() - infolder = self.newContent() - - self.assertRaises(NotImplementedError, infolder.getTreeIdList) - self.assertEqual(infolder.isBTree(), True) - self.assertEqual(infolder.isHBTree(), False) - - def test_12_migrateFolderWithGoodIdsInIt(self): - """ - migrate folder from btree to hbtree folder, which already has ids - HBTree-friendly - """ - id_prefix = 'BASE' - obj1_id = '%s-1'%(id_prefix,) - obj2_id = '%s-2'%(id_prefix,) - obj3_id = '%s-3'%(id_prefix,) - # Create some objects - self.assertEqual(self.folder.getIdGenerator(), '') - self.assertEqual(len(self.folder), 0) - obj1 = self.newContent(id=obj1_id) - obj2 = self.newContent(id=obj2_id) - obj3 = self.newContent(id=obj3_id) - self.tic() - # call migration script - self.folder.migrateToHBTree() - self.tic() - # check we now have a hbtree - self.assertEqual(self.folder.isBTree(), False) - self.assertEqual(self.folder.isHBTree(), True) - self.assertEqual(len(self.folder.getTreeIdList()), 1) - self.assertEqual(len(self.folder.objectIds()), 3) - # check params of objectIds in case of hbtree - self.assertEqual(len(self.folder.objectIds(base_id=None)), 0) - self.assertEqual(len(self.folder.objectValues()), 3) - self.assertEqual(len(self.folder.objectValues(base_id=id_prefix)), 3) - # add object without base - obj4 = self.newContent(id='1') - self.assertEqual(obj4.getId(), '1') - self.assertEqual(len(self.folder.objectIds(base_id=None)), 1) - self.assertEqual(len(self.folder.objectValues()), 4) - self.assertEqual(len(self.folder.objectValues(base_id=id_prefix)), 3) - - def test_13_wrongFolderHandlerFix(self): - self.assertEqual(self.folder.isBTree(), True) - self.assertEqual(self.folder.isHBTree(), False) - - self.folder._folder_handler = 'CMFBTreeFolderHandler' - self.tic() - - self.assertEqual(self.folder.isHBTree(), False) - - self.assertEqual(self.folder._fixFolderHandler(), True) - self.commit() - - self.assertEqual(self.folder.isBTree(), True) - self.assertEqual(self.folder.isHBTree(), False) - - self.folder.migrateToHBTree() - self.tic() - - self.assertEqual(self.folder.isBTree(), False) - self.assertEqual(self.folder.isHBTree(), True) - - def test_14_wrongFolderHandlerMigrate(self): - self.assertEqual(self.folder.isBTree(), True) - self.assertEqual(self.folder.isHBTree(), False) - - self.folder._folder_handler = 'CMFBTreeFolderHandler' - self.tic() - - self.assertEqual(self.folder.isHBTree(), False) - - self.folder.migrateToHBTree() - self.tic() - - self.assertEqual(self.folder.isBTree(), False) - self.assertEqual(self.folder.isHBTree(), True) - - self.folder.newContent() - self.tic() - - self.assertEqual(self.folder.isBTree(), False) - self.assertEqual(self.folder.isHBTree(), True) - - def test_15_checkMigrationWorksIfIdsDontChange(self): - """ - migrate folder using a script that leaves some objects with same ids - """ - # Create some objects - self.assertEqual(self.folder.getIdGenerator(), '') - self.assertEqual(len(self.folder), 0) - obj1 = self.newContent() - self.assertEqual(obj1.getId(), '1') - obj2 = self.newContent() - self.assertEqual(obj2.getId(), '2') - obj3 = self.newContent(id='custom-id') - self.assertEqual(obj3.getId(), 'custom-id') - self.tic() - # call migration script Base_generateIdFromCreationDate that only changes int ids - self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromCreationDate", - new_generate_id_method="_generatePerDayId") - self.tic() - # check object ids - from DateTime import DateTime - date = DateTime().Date() - date = date.replace("/", "") - #1 y 2 should have new format id (because old ids were int) - self.assertEqual(obj1.getId(), '%s-1' % date) - self.assertEqual(obj2.getId(), '%s-2' % date) - #3 should have the same old id - self.assertEqual(obj3.getId(), 'custom-id') + # Some helper methods + + def getTitle(self): + return "Folder Migration" + + def getBusinessTemplateList(self): + """ + Return the list of business templates. + """ + return tuple() + + def afterSetUp(self): + """ + Executed before each test_*. + """ + self.login() + self.folder = self.portal.newContent(id='TestFolder', + portal_type='Folder') + + def beforeTearDown(self): + """ + Executed after each test_*. + """ + self.folder.manage_delObjects(ids=list(self.folder.objectIds())) + self.portal.manage_delObjects(ids=[self.folder.getId(),]) + clearCache() + self.tic() + + def newContent(self, *args, **kwargs): + """ + Create an object in self.folder and return it. + """ + return self.folder.newContent(portal_type='Folder', *args, **kwargs) + + def test_01_folderIsBtree(self): + """ + Test the folder is a BTree + """ + self.assertRaises(NotImplementedError, self.folder.getTreeIdList) + self.assertEqual(self.folder.isBTree(), True) + self.assertEqual(self.folder.isHBTree(), False) + + def test_02_migrateFolder(self): + """ + migrate folder from btree to hbtree + """ + # Create some objects + self.assertEqual(self.folder.getIdGenerator(), '') + self.assertEqual(len(self.folder), 0) + obj1 = self.newContent() + self.assertEqual(obj1.getId(), '1') + obj2 = self.newContent() + self.assertEqual(obj2.getId(), '2') + obj3 = self.newContent() + self.assertEqual(obj3.getId(), '3') + self.tic() + # call migration script + self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromStopDate", + new_generate_id_method="_generatePerDayId") + self.tic() + # check we now have a hbtree + self.assertEqual(self.folder.isBTree(), False) + self.assertEqual(self.folder.isHBTree(), True) + self.assertEqual(len(self.folder.getTreeIdList()), 1) + self.assertEqual(len(self.folder.objectIds()), 3) + # check params of objectIds in case of hbtree + self.assertEqual(len(self.folder.objectIds(base_id=None)), 0) + self.assertEqual(len(self.folder.objectValues()), 3) + self.assertEqual(len(self.folder.objectValues(base_id=None)), 0) + # check object ids + from DateTime import DateTime + date = DateTime().Date() + date = date.replace("/", "") + self.assertEqual(obj1.getId(), '%s-1' %date) + self.assertEqual(obj2.getId(), '%s-2' %date) + self.assertEqual(obj3.getId(), '%s-3' %date) + # add object and check its id + obj4 = self.newContent() + self.assertEqual(obj4.getId().split('-')[0], date) + + def test_03_emptyFolderIsBtree(self): + """ + Test the folder is a BTree + """ + self.assertRaises(NotImplementedError, self.folder.getTreeIdList) + self.assertEqual(self.folder.isBTree(), True) + self.assertEqual(self.folder.isHBTree(), False) + + def test_03a_filledFolderIsBtree(self): + """ + Test the folder is a BTree + """ + self.folder.newContent() + self.assertRaises(NotImplementedError, self.folder.getTreeIdList) + self.assertEqual(self.folder.isBTree(), True) + self.assertEqual(self.folder.isHBTree(), False) + + def test_04_migrateEmptyFolder(self): + """ + migrate empty folder from btree to hbtree + """ + # Create some objects + self.assertEqual(self.folder.getIdGenerator(), '') + self.assertEqual(len(self.folder), 0) + self.assertEqual(len(self.folder.objectIds()), 0) + # call migration script + self.folder.migrateToHBTree(migration_generate_id_method=None, + new_generate_id_method="_generatePerDayId") + self.tic() + # check we now have a hbtree + self.assertEqual(self.folder.isBTree(), False) + self.assertEqual(self.folder.isHBTree(), True) + self.assertEqual(len(self.folder.objectIds()), 0) + # check new object ids + obj1 = self.newContent() + from DateTime import DateTime + date = DateTime().Date() + date = date.replace("/", "") + self.assertTrue(date in obj1.getId()) + # check we still have a hbtree + self.assertEqual(self.folder.isBTree(), False) + self.assertEqual(self.folder.isHBTree(), True) + self.assertEqual(len(self.folder.objectIds()), 1) + + def test_05_migrateFolderWithoutIdChange(self): + """ + migrate folder from btree to hbtree, do not touch ids + """ + # Create some objects + self.assertEqual(self.folder.getIdGenerator(), '') + self.assertEqual(len(self.folder), 0) + obj1 = self.newContent() + self.assertEqual(obj1.getId(), '1') + obj2 = self.newContent() + self.assertEqual(obj2.getId(), '2') + obj3 = self.newContent() + self.assertEqual(obj3.getId(), '3') + self.tic() + # call migration script with explicit new_generate_id_method (so migration code + # doesn't assign a good default + self.folder.migrateToHBTree(new_generate_id_method='_generateNextId') + self.tic() + # check we now have a hbtree + self.assertEqual(self.folder.isBTree(), False) + self.assertEqual(self.folder.isHBTree(), True) + self.assertEqual(len(self.folder.getTreeIdList()), 1) + self.assertEqual(len(self.folder.objectIds()), 3) + # check params of objectIds in case of hbtree + self.assertEqual(len(self.folder.objectIds(base_id=None)), 3) + self.assertEqual(len(self.folder.objectValues()), 3) + self.assertEqual(len(self.folder.objectValues(base_id=None)), 3) + # check object ids + self.assertEqual(obj1.getId(), '1') + self.assertEqual(obj2.getId(), '2') + self.assertEqual(obj3.getId(), '3') + # add object and check its id + obj4 = self.newContent() + self.assertEqual(obj4.getId(), '4') + + def test_06_migrateFolderChangeIdGenerationMethodLater(self): + """ + migrate folder from btree to hbtree, do not touch ids + """ + # Create some objects + self.assertEqual(self.folder.getIdGenerator(), '') + self.assertEqual(len(self.folder), 0) + obj1 = self.newContent() + self.assertEqual(obj1.getId(), '1') + obj2 = self.newContent() + self.assertEqual(obj2.getId(), '2') + obj3 = self.newContent() + self.assertEqual(obj3.getId(), '3') + self.tic() + # call migration script with explicit new_generate_id_method (so migration code + # doesn't assign a good default + self.folder.migrateToHBTree(new_generate_id_method='_generateNextId') + self.tic() + # check we now have a hbtree + self.assertEqual(self.folder.isBTree(), False) + self.assertEqual(self.folder.isHBTree(), True) + self.assertEqual(len(self.folder.getTreeIdList()), 1) + self.assertEqual(len(self.folder.objectIds()), 3) + # check params of objectIds in case of hbtree + self.assertEqual(len(self.folder.objectIds(base_id=None)), 3) + self.assertEqual(len(self.folder.objectValues()), 3) + self.assertEqual(len(self.folder.objectValues(base_id=None)), 3) + # check object ids + self.assertEqual(obj1.getId(), '1') + self.assertEqual(obj2.getId(), '2') + self.assertEqual(obj3.getId(), '3') + # add object and check its id + obj4 = self.newContent() + self.assertEqual(obj4.getId(), '4') + # set id generator + id_generator_method = '_generatePerDayId' + self.folder.setIdGenerator(id_generator_method) + self.commit() + self.assertEqual(self.folder.getIdGenerator(), id_generator_method) + # check object ids + self.assertEqual(obj1.getId(), '1') + self.assertEqual(obj2.getId(), '2') + self.assertEqual(obj3.getId(), '3') + self.assertEqual(obj4.getId(), '4') + # add object and check its id + from DateTime import DateTime + date = DateTime().Date() + date = date.replace("/", "") + + obj5 = self.newContent() + self.assertEqual(obj5.getId().split('-')[0], date) + + def test_07_migrateFolderTwice(self): + """ + migrate folder twice from btree to hbtree + """ + # Create some objects + self.assertEqual(self.folder.getIdGenerator(), '') + self.assertEqual(len(self.folder), 0) + obj1 = self.newContent() + self.assertEqual(obj1.getId(), '1') + obj2 = self.newContent() + self.assertEqual(obj2.getId(), '2') + obj3 = self.newContent() + self.assertEqual(obj3.getId(), '3') + self.tic() + # call migration script + self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromStopDate", + new_generate_id_method="_generatePerDayId") + self.tic() + # check we now have a hbtree + self.assertEqual(self.folder.isBTree(), False) + self.assertEqual(self.folder.isHBTree(), True) + self.assertEqual(len(self.folder.getTreeIdList()), 1) + self.assertEqual(len(self.folder.objectIds()), 3) + # check params of objectIds in case of hbtree + self.assertEqual(len(self.folder.objectIds(base_id=None)), 0) + self.assertEqual(len(self.folder.objectValues()), 3) + self.assertEqual(len(self.folder.objectValues(base_id=None)), 0) + # check object ids + from DateTime import DateTime + date = DateTime().Date() + date = date.replace("/", "") + self.assertEqual(obj1.getId(), '%s-1' %date) + self.assertEqual(obj2.getId(), '%s-2' %date) + self.assertEqual(obj3.getId(), '%s-3' %date) + # add object and check its id + obj4 = self.newContent() + self.assertEqual(obj4.getId().split('-')[0], date) + # call migration script again + self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromStopDate", + new_generate_id_method="_generatePerDayId") + self.tic() + + # check object ids + self.assertEqual(obj1.getId(), '%s-1' %date) + self.assertEqual(obj2.getId(), '%s-2' %date) + self.assertEqual(obj3.getId(), '%s-3' %date) + self.assertEqual(obj4.getId().split('-')[0], date) + + def test_08_migrateFolderTwiceSimultaneously(self): + """ + migrate folder twice from btree to hbtree, simultaneously + """ + # Create some objects + self.assertEqual(self.folder.getIdGenerator(), '') + self.assertEqual(len(self.folder), 0) + obj1 = self.newContent() + self.assertEqual(obj1.getId(), '1') + obj2 = self.newContent() + self.assertEqual(obj2.getId(), '2') + obj3 = self.newContent() + self.assertEqual(obj3.getId(), '3') + self.tic() + # call migration script twice + self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromStopDate", + new_generate_id_method="_generatePerDayId") + self.commit() + self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromStopDate", + new_generate_id_method="_generatePerDayId") + self.tic() + # check we now have a hbtree + self.assertEqual(self.folder.isBTree(), False) + self.assertEqual(self.folder.isHBTree(), True) + self.assertEqual(len(self.folder.getTreeIdList()), 1) + self.assertEqual(len(self.folder.objectIds()), 3) + # check params of objectIds in case of hbtree + self.assertEqual(len(self.folder.objectIds(base_id=None)), 0) + self.assertEqual(len(self.folder.objectValues()), 3) + self.assertEqual(len(self.folder.objectValues(base_id=None)), 0) + # check object ids + from DateTime import DateTime + date = DateTime().Date() + date = date.replace("/", "") + self.assertEqual(obj1.getId(), '%s-1' %date) + self.assertEqual(obj2.getId(), '%s-2' %date) + self.assertEqual(obj3.getId(), '%s-3' %date) + # add object and check its id + obj4 = self.newContent() + self.assertEqual(obj4.getId().split('-')[0], date) + + def test_09_migrateFolderCreateNewObjectAtOnce(self): + """ + migrate folder from btree to hbtree, create object with base, without any + previous checks + """ + # Create some objects + self.assertEqual(self.folder.getIdGenerator(), '') + self.assertEqual(len(self.folder), 0) + obj1 = self.newContent() + self.assertEqual(obj1.getId(), '1') + obj2 = self.newContent() + self.assertEqual(obj2.getId(), '2') + obj3 = self.newContent() + self.assertEqual(obj3.getId(), '3') + self.tic() + # call migration script + self.folder.migrateToHBTree() + self.tic() + obj4 = self.newContent(id='BASE-123') + self.assertEqual(obj4.getId(), 'BASE-123') + self.assertEqual(len(self.folder.objectIds(base_id=None)), 3) + self.assertEqual(len(self.folder.objectValues()), 4) + self.assertEqual(len(self.folder.objectValues(base_id=None)), 3) + self.assertEqual(len(self.folder.objectIds(base_id='BASE')), 1) + self.assertEqual(len(self.folder.objectValues(base_id='BASE')), 1) + + def test_10_migrateFolderCreateMoreObjectAtOnceDifferentBase(self): + """ + migrate folder from btree to hbtree, create objects with two bases, + without any previous checks + """ + # Create some objects + self.assertEqual(self.folder.getIdGenerator(), '') + self.assertEqual(len(self.folder), 0) + obj1 = self.newContent() + self.assertEqual(obj1.getId(), '1') + obj2 = self.newContent() + self.assertEqual(obj2.getId(), '2') + obj3 = self.newContent() + self.assertEqual(obj3.getId(), '3') + self.tic() + # call migration script + self.folder.migrateToHBTree() + self.tic() + obj4 = self.newContent(id='BASE-123') + obj5 = self.newContent(id='BASE-BELONG-123') + self.assertEqual(obj4.getId(), 'BASE-123') + self.assertEqual(obj5.getId(), 'BASE-BELONG-123') + self.assertEqual(len(self.folder.objectIds(base_id=None)), 3) + self.assertEqual(len(self.folder.objectValues()), 5) + self.assertEqual(len(self.folder.objectValues(base_id=None)), 3) + self.assertEqual(len(self.folder.objectIds(base_id='BASE')), 1) + self.assertEqual(len(self.folder.objectValues(base_id='BASE')), 1) + self.assertEqual(len(self.folder.objectIds(base_id='BASE-BELONG')), 1) + self.assertEqual(len(self.folder.objectValues(base_id='BASE-BELONG')), 1) + + def test_11_folderInMigratedFolderIsBTree(self): + """ + Test the folder in HBTree folder is a BTree + """ + self.folder.migrateToHBTree() + self.tic() + infolder = self.newContent() + + self.assertRaises(NotImplementedError, infolder.getTreeIdList) + self.assertEqual(infolder.isBTree(), True) + self.assertEqual(infolder.isHBTree(), False) + + def test_12_migrateFolderWithGoodIdsInIt(self): + """ + migrate folder from btree to hbtree folder, which already has ids + HBTree-friendly + """ + id_prefix = 'BASE' + obj1_id = '%s-1'%(id_prefix,) + obj2_id = '%s-2'%(id_prefix,) + obj3_id = '%s-3'%(id_prefix,) + # Create some objects + self.assertEqual(self.folder.getIdGenerator(), '') + self.assertEqual(len(self.folder), 0) + self.newContent(id=obj1_id) + self.newContent(id=obj2_id) + self.newContent(id=obj3_id) + self.tic() + # call migration script + self.folder.migrateToHBTree() + self.tic() + # check we now have a hbtree + self.assertEqual(self.folder.isBTree(), False) + self.assertEqual(self.folder.isHBTree(), True) + self.assertEqual(len(self.folder.getTreeIdList()), 1) + self.assertEqual(len(self.folder.objectIds()), 3) + # check params of objectIds in case of hbtree + self.assertEqual(len(self.folder.objectIds(base_id=None)), 0) + self.assertEqual(len(self.folder.objectValues()), 3) + self.assertEqual(len(self.folder.objectValues(base_id=id_prefix)), 3) + # add object without base + obj4 = self.newContent(id='1') + self.assertEqual(obj4.getId(), '1') + self.assertEqual(len(self.folder.objectIds(base_id=None)), 1) + self.assertEqual(len(self.folder.objectValues()), 4) + self.assertEqual(len(self.folder.objectValues(base_id=id_prefix)), 3) + + def test_13_wrongFolderHandlerFix(self): + self.assertEqual(self.folder.isBTree(), True) + self.assertEqual(self.folder.isHBTree(), False) + + self.folder._folder_handler = 'CMFBTreeFolderHandler' + self.tic() + + self.assertEqual(self.folder.isHBTree(), False) + + self.assertEqual(self.folder._fixFolderHandler(), True) + self.commit() + + self.assertEqual(self.folder.isBTree(), True) + self.assertEqual(self.folder.isHBTree(), False) + + self.folder.migrateToHBTree() + self.tic() + + self.assertEqual(self.folder.isBTree(), False) + self.assertEqual(self.folder.isHBTree(), True) + + def test_14_wrongFolderHandlerMigrate(self): + self.assertEqual(self.folder.isBTree(), True) + self.assertEqual(self.folder.isHBTree(), False) + + self.folder._folder_handler = 'CMFBTreeFolderHandler' + self.tic() + + self.assertEqual(self.folder.isHBTree(), False) + + self.folder.migrateToHBTree() + self.tic() + + self.assertEqual(self.folder.isBTree(), False) + self.assertEqual(self.folder.isHBTree(), True) + + self.folder.newContent() + self.tic() + + self.assertEqual(self.folder.isBTree(), False) + self.assertEqual(self.folder.isHBTree(), True) + + def test_15_checkMigrationWorksIfIdsDontChange(self): + """ + migrate folder using a script that leaves some objects with same ids + """ + # Create some objects + self.assertEqual(self.folder.getIdGenerator(), '') + self.assertEqual(len(self.folder), 0) + obj1 = self.newContent() + self.assertEqual(obj1.getId(), '1') + obj2 = self.newContent() + self.assertEqual(obj2.getId(), '2') + obj3 = self.newContent(id='custom-id') + self.assertEqual(obj3.getId(), 'custom-id') + self.tic() + # call migration script Base_generateIdFromCreationDate that only changes int ids + self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromCreationDate", + new_generate_id_method="_generatePerDayId") + self.tic() + # check object ids + from DateTime import DateTime + date = DateTime().Date() + date = date.replace("/", "") + #1 y 2 should have new format id (because old ids were int) + self.assertEqual(obj1.getId(), '%s-1' % date) + self.assertEqual(obj2.getId(), '%s-2' % date) + #3 should have the same old id + self.assertEqual(obj3.getId(), 'custom-id') def test_suite(): suite = unittest.TestSuite() diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolderMigration.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolderMigration.xml index 6948df6a7e41ae9fd23c92194189dfa881789ca5..f7383b214f96293187deec977dac24880b058e52 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolderMigration.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testFolderMigration.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testFolderMigration</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5Type.tests.testFolderMigration</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testFolderMigration</string> </value> @@ -37,324 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 41, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 42, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 44, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 45, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 48, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 50, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 51, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 54, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 55, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 58, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 59, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 62, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 63, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 64, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 65, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 67, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 68, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 71, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 73, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 74, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 77, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 78, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 79, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 81, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 82, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 86, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 87, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 88, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 89, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 90, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 91, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 92, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 93, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 94, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 96, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 98, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:100, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:101, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:102, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:103, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:105, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:106, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:107, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:109, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:110, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:111, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:112, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:113, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:114, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:116, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:117, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:119, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:120, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:123, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:124, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:125, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:127, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:128, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:131, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:132, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:133, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:134, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:136, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:137, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:141, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:142, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:143, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:145, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:147, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:149, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:150, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:151, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:153, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:154, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:155, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:156, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:157, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:159, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:160, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:161, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:163, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:164, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:168, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:169, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:170, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:171, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:172, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:173, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:174, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:175, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:176, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:179, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:180, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:182, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:183, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:184, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:185, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:187, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:188, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:189, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:191, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:192, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:193, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:195, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:196, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:198, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:199, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:203, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:204, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:205, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:206, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:207, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:208, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:209, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:210, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:211, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:214, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:215, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:217, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:218, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:219, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:220, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:222, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:223, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:224, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:226, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:227, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:228, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:230, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:231, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:233, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:234, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:235, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:236, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:238, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:239, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:240, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:241, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:243, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:244, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:245, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:247, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:248, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:250, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:251, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:255, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:256, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:257, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:258, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:259, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:260, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:261, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:262, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:263, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:265, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:267, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:269, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:270, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:271, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:272, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:274, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:275, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:276, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:278, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:279, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:280, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:281, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:282, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:283, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:285, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:286, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:288, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:290, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:293, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:294, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:295, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:296, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:298, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:299, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:303, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:304, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:305, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:306, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:307, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:308, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:309, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:310, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:311, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:313, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:315, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:316, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:318, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:320, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:321, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:322, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:323, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:325, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:326, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:327, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:329, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:330, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:331, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:332, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:333, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:334, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:336, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:337, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:339, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:340, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:345, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:346, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:347, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:348, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:349, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:350, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:351, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:352, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:353, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:355, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:356, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:357, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:358, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:359, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:360, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:361, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:362, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:363, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:365, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:366, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:371, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:372, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:373, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:374, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:375, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:376, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:377, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:378, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:379, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:381, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:382, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:383, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:384, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:385, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:386, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:387, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:388, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:389, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:390, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:391, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:392, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:393, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:395, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:396, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:399, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:400, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:401, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:403, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:404, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:405, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:407, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:408, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:412, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:413, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:414, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:415, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:417, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:418, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:419, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:420, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:421, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:422, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:424, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:425, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:427, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:428, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:429, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:430, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:432, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:433, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:434, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:436, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:437, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:438, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:439, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:440, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:442, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:443, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:444, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:446, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:447, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:449, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:451, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:452, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:454, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:455, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:457, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:458, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:460, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:461, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:463, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W:464, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:465, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:467, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:468, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:470, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:472, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:473, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:475, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:476, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:478, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:479, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:481, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:482, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:419, 6: Unused variable \'obj1\' (unused-variable)</string> - <string>W:421, 6: Unused variable \'obj3\' (unused-variable)</string> - <string>W:420, 6: Unused variable \'obj2\' (unused-variable)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -364,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -383,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -392,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testGeographicalAddress.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testGeographicalAddress.py index b3e22d2ecc0ed085d7f0901c5cc4ab1eb0c80ce1..1448037dd7a79a7e98b082fa2a9a67fbe99341cb 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testGeographicalAddress.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testGeographicalAddress.py @@ -26,13 +26,11 @@ # ############################################################################## -import unittest - from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase -from AccessControl.SecurityManagement import newSecurityManager from Products.ERP5Type.tests.Sequence import SequenceList from Products.ERP5Type.tests.utils import createZODBPythonScript + class TestGeographicalAddress(ERP5TypeTestCase): """ ERP5 Geographical Address related tests. @@ -41,7 +39,6 @@ class TestGeographicalAddress(ERP5TypeTestCase): on a Geographical Address returns the standard text format. """ - run_all_test = 1 entity_portal_type = 'Person' address_portal_type = 'Address' street_address_text = "rue Truc" @@ -49,37 +46,7 @@ class TestGeographicalAddress(ERP5TypeTestCase): zip_code_text = "12345" city_text = "City1" - def getTitle(self): - return "Geographical Address" - - def getBusinessTemplateList(self): - """ - """ - return ('erp5_base', ) - - def login(self, quiet=0, run=run_all_test): - uf = self.getPortal().acl_users - uf._doAddUser('rc', '', ['Manager'], []) - user = uf.getUserById('rc').__of__(uf) - newSecurityManager(None, user) - - def enableLightInstall(self): - """ - You can override this. - Return if we should do a light install (1) or not (0) - """ - return 1 - - def enableActivityTool(self): - """ - You can override this. - Return if we should create (1) or not (0) an activity tool. - """ - return 1 - - def afterSetUp(self, quiet=1, run=run_all_test): - self.login() - self.portal = self.getPortal() + def afterSetUp(self): self.category_tool = self.getCategoryTool() self.createCategories() @@ -91,7 +58,7 @@ class TestGeographicalAddress(ERP5TypeTestCase): region_category_list = ['country1', 'country2', ] if len(self.category_tool.region.contentValues()) == 0 : for category_id in region_category_list: - o = self.category_tool.region.newContent(portal_type='Category', + self.category_tool.region.newContent(portal_type='Category', id=category_id, title=category_id.capitalize()) self.region_category_list = ['region/%s' % x for x \ @@ -101,7 +68,7 @@ class TestGeographicalAddress(ERP5TypeTestCase): """ Create an entity """ - portal = self.getPortal() + portal = self.portal module = portal.getDefaultModule(self.entity_portal_type) entity = module.newContent(portal_type=self.entity_portal_type) sequence.edit( @@ -141,12 +108,10 @@ class TestGeographicalAddress(ERP5TypeTestCase): self.zip_code_text, self.city_text,)) - def test_01_standardAddress(self, quiet=0, run=run_all_test): + def test_01_standardAddress(self): """ Test property existence """ - if not run: return - sequence_list = SequenceList() sequence_string = '\ CreateEntity \ @@ -161,7 +126,7 @@ class TestGeographicalAddress(ERP5TypeTestCase): """ This script returns a different address format. """ - createZODBPythonScript(self.getPortal().portal_skins.custom, + createZODBPythonScript(self.portal.portal_skins.custom, 'Address_asText', '', """ return '%s\\n%s %s COUNTRY' % \\ (context.getStreetAddress(), @@ -180,12 +145,10 @@ return '%s\\n%s %s COUNTRY' % \\ self.zip_code_text, self.city_text)) - def test_02_asTextScript(self, quiet=0, run=run_all_test): + def test_02_asTextScript(self): """ Test property existence """ - if not run: return - sequence_list = SequenceList() sequence_string = '\ CreateEntity \ @@ -197,7 +160,3 @@ return '%s\\n%s %s COUNTRY' % \\ sequence_list.addSequenceString(sequence_string) sequence_list.play(self) -def test_suite(): - suite = unittest.TestSuite() - suite.addTest(unittest.makeSuite(TestGeographicalAddress)) - return suite diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testGeographicalAddress.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testGeographicalAddress.xml index 33799f9d5fd0383669ca2133770662bc51f8c243..1ca8c7d83e7d9ebd174a74ab0d5aef721f47fe45 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testGeographicalAddress.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testGeographicalAddress.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testGeographicalAddress</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5.tests.testGeographicalAddress</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testGeographicalAddress</string> </value> @@ -37,10 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 80, 2: Arguments number differs from overridden \'afterSetUp\' method (arguments-differ)</string> - <string>W: 94, 8: Unused variable \'o\' (unused-variable)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -50,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -69,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -78,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIdToolUpgrade.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIdToolUpgrade.py index ba3501ca9ce5cfb53166a6604fd7c0bb91e2e513..5d30d60e3be18b76b3485858c877b127cd15399b 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIdToolUpgrade.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIdToolUpgrade.py @@ -138,9 +138,9 @@ class TestIdToolUpgrade(ERP5TypeTestCase): bt = self.portal.portal_templates.getInstalledBusinessTemplate('erp5_core', strict=True) for path, obj in bt._path_item._objects.iteritems(): - path, obj_id = path.rsplit('/', 1) - if path == 'portal_ids': - id_tool._setObject(obj_id, obj._getCopy(bt)) + path, obj_id = path.rsplit('/', 1) + if path == 'portal_ids': + id_tool._setObject(obj_id, obj._getCopy(bt)) self.tic() id_list = id_tool.generateNewLengthIdList(id_group='foo') # it is known that with current upgrade there is a hole @@ -173,7 +173,7 @@ class TestIdToolUpgrade(ERP5TypeTestCase): def _setUpLastMaxIdDict(self, id_generator_reference): def countup(id_generator, id_group, until): - for i in xrange(until + 1): + for _ in xrange(until + 1): self.id_tool.generateNewId(id_generator=id_generator_reference, id_group=id_group) @@ -251,14 +251,14 @@ class TestIdToolUpgrade(ERP5TypeTestCase): self._setUpLastMaxIdDict(id_generator_reference) # test migration: PersistentMapping to OOBTree - self.assertTrue(isinstance(last_id_dict, PersistentMapping)) + self.assertIsInstance(last_id_dict, PersistentMapping) self._assertIdGeneratorLastMaxIdDict(id_generator) id_generator.rebuildGeneratorIdDict() # migrate the dict self._assertIdGeneratorLastMaxIdDict(id_generator) # test migration: OOBTree to OOBTree. this changes nothing, just to be sure last_id_dict = self._getLastIdDict(id_generator) - self.assertTrue(isinstance(last_id_dict, OOBTree)) + self.assertIsInstance(last_id_dict, OOBTree) self._assertIdGeneratorLastMaxIdDict(id_generator) id_generator.rebuildGeneratorIdDict() # migrate the dict self._assertIdGeneratorLastMaxIdDict(id_generator) @@ -268,8 +268,8 @@ class TestIdToolUpgrade(ERP5TypeTestCase): 'SQL Non Continuous Increasing Id Generator': self._setLastIdDict(id_generator, OOBTree()) # set empty one last_id_dict = self._getLastIdDict(id_generator) - assert(len(last_id_dict), 0) # 0 because it is empty - self.assertTrue(isinstance(last_id_dict, OOBTree)) + self.assertEqual(len(last_id_dict), 0) # 0 because it is empty + self.assertIsInstance(last_id_dict, OOBTree) # migrate the dict totally from sql table in this case id_generator.rebuildGeneratorIdDict() self._assertIdGeneratorLastMaxIdDict(id_generator) diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIdToolUpgrade.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIdToolUpgrade.xml index 3f7247f99de291a5d80cd15593f39b792a16242d..f5c7761e1302c94f0958fbf720559a67d2fb6f02 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIdToolUpgrade.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIdToolUpgrade.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testIdToolUpgrade</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5.tests.testIdToolUpgrade</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testIdToolUpgrade</string> </value> @@ -37,13 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W:141, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string> - <string>W:142, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string> - <string>W:143, 0: Bad indentation. Found 12 spaces, expected 8 (bad-indentation)</string> - <string>W:176, 10: Unused variable \'i\' (unused-variable)</string> - <string>W:271, 6: Assert called on a 2-uple. Did you mean \'assert x,y\'? (assert-on-tuple)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -53,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -72,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -81,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testInteractionWorkflow.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testInteractionWorkflow.py index c4aa93d53bc57fcd5851d92cef5f3a6c5f415006..1cddf3d63b784cb799fa34745f691e5333983422 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testInteractionWorkflow.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testInteractionWorkflow.py @@ -35,6 +35,7 @@ from Products.ERP5Type.Base import _aq_reset from AccessControl import ClassSecurityInfo from Products.ERP5Type.Workflow import addWorkflowByType + class TestInteractionWorkflow(ERP5TypeTestCase): portal_type = 'Organisation' @@ -78,11 +79,9 @@ class TestInteractionWorkflow(ERP5TypeTestCase): return addWorkflowByType(wf_tool, "interaction_workflow", wf_id) def createInteractionWorkflow(self): - id = 'test_workflow' - wf_type = "interaction_workflow" - if getattr(self.getWorkflowTool(), id, None) is None: - self._createInteractionWorkflowWithId(id) - wf = self.getWorkflowTool()[id] + if getattr(self.getWorkflowTool(), 'test_workflow', None) is None: + self._createInteractionWorkflowWithId('test_workflow') + wf = self.getWorkflowTool()['test_workflow'] self.wf = wf if getattr(wf.scripts, 'afterEdit', None) is None: wf.scripts.manage_addProduct['PythonScripts']\ @@ -96,9 +95,7 @@ class TestInteractionWorkflow(ERP5TypeTestCase): _aq_reset() # XXX Fails XXX _setLastId not found when doing newContent def createInteractionWorkflowWithTwoInteractions(self): - id = 'test_workflow' - wf_type = "interaction_workflow (Web-configurable interaction workflow)" - wf = self._createInteractionWorkflowWithId(id) + wf = self._createInteractionWorkflowWithId('test_workflow') self.wf = wf wf.scripts.manage_addProduct['PythonScripts']\ .manage_addPythonScript(id='afterEditA') diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testInteractionWorkflow.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testInteractionWorkflow.xml index 08f3aaca5628402f06a3d554d437a6c24ee91550..52090a370e61b70095cd89e2b7736f17e2ac85d9 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testInteractionWorkflow.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testInteractionWorkflow.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testInteractionWorkflow</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5.tests.testInteractionWorkflow</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testInteractionWorkflow</string> </value> @@ -37,12 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 82, 4: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W: 83, 4: Unused variable \'wf_type\' (unused-variable)</string> - <string>W:100, 4: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:101, 4: Unused variable \'wf_type\' (unused-variable)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -52,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -71,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -80,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIntrospectionTool.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIntrospectionTool.py index 3612c80d8c0abe2f083f58b989e6310a32e5165c..821310738e29e693ee605005d2c4a924388d7d4d 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIntrospectionTool.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIntrospectionTool.py @@ -26,34 +26,14 @@ # ############################################################################## -import unittest - -from AccessControl.SecurityManagement import newSecurityManager +import json from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase -import json class TestIntrospectionTool(ERP5TypeTestCase): - def getBusinessTemplateList(self): - """ """ - return ('erp5_base',) - - def afterSetUp(self): - self.portal = self.getPortal() - self.login() - - def login(self): - uf = self.getPortal().acl_users - uf._doAddUser('seb', '', ['Manager'], []) - uf._doAddUser('ERP5TypeTestCase', '', ['Manager'], []) - user = uf.getUserById('seb').__of__(uf) - newSecurityManager(None, user) def test_getSystemSignatureJSON(self): - """ - Test - """ signature_json = self.portal.portal_introspections.getSystemSignatureAsJSON() signature_by_json = json.loads(signature_json) signature = self.portal.portal_introspections.getSystemSignatureDict() @@ -62,7 +42,3 @@ class TestIntrospectionTool(ERP5TypeTestCase): for key in signature: self.assertEqual(signature[key], signature_by_json[key]) -def test_suite(): - suite = unittest.TestSuite() - suite.addTest(unittest.makeSuite(TestIntrospectionTool)) - return suite diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIntrospectionTool.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIntrospectionTool.xml index 1c1ba9990e96b4602a8a4bd49c6e10350a9706a1..aa314a1c9e8c1581c7b500d094bf2b5109265349 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIntrospectionTool.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testIntrospectionTool.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testIntrospectionTool</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5.tests.testIntrospectionTool</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testIntrospectionTool</string> </value> @@ -37,9 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 46, 2: Arguments number differs from overridden \'login\' method (arguments-differ)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -49,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -68,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -77,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testLocalizer.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testLocalizer.py index 45b226f3f6e14cfdbd1765347ee61e3a12724c7c..64d4083286d519f9f0824b94eddc0ce083ec6fff 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testLocalizer.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testLocalizer.py @@ -150,7 +150,7 @@ class TestLocalizer(ERP5TypeTestCase): {'fr':"C'est 1€.", 'note':'',}) localizer = portal.Localizer - test_script = createZODBPythonScript(portal.portal_skins.custom, + createZODBPythonScript(portal.portal_skins.custom, 'test_script', '', """ def assertEquals(a, b): if a != b: @@ -191,7 +191,6 @@ assertEquals("This is 1€.", context.Base_translateString("This is 1€.")) value (e.g. the original message) must be returned """ message = " This is 1€ non-translated " - localizer = self.portal.Localizer # Base_translateString == Localizer.translate() currently, which calls # zope.i18n.translate and sets 'default' to 'message' before passing it to diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testLocalizer.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testLocalizer.xml index b1358499fb1aea810f757f27c54d8dc6122f651b..f79631a40ce19492d2e43bfa90c104dd5695f65f 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testLocalizer.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testLocalizer.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testLocalizer</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5Type.tests.testLocalizer</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testLocalizer</string> </value> @@ -37,10 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W:153, 4: Unused variable \'test_script\' (unused-variable)</string> - <string>W:194, 4: Unused variable \'localizer\' (unused-variable)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -50,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -69,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -78,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testMemcachedTool.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testMemcachedTool.py index 8a9d928d3fb922c760d2908f64320d01ab8ad2fe..8a2950f11ac0321192923b5f963301cb0465a03b 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testMemcachedTool.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testMemcachedTool.py @@ -74,11 +74,8 @@ class TestMemcachedTool(ERP5TypeTestCase): self.tic() def afterSetUp(self): - self.login() - - def login(self): uf = self.portal.acl_users - uf._doAddUser('vincent', '', ['Manager'], []) + uf._doAddUser('vincent', self.newPassword(), ['Manager'], []) user = uf.getUserById('vincent').__of__(uf) newSecurityManager(None, user) @@ -104,6 +101,7 @@ class TestMemcachedTool(ERP5TypeTestCase): memcached_tool = self.portal.portal_memcached try: import memcache + del memcache except ImportError: # MemcachedTool should be disabled self.assertRaises(RuntimeError, memcached_tool.getMemcachedDict) diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testMemcachedTool.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testMemcachedTool.xml index bb8a8bee13e29da3e0e7d9858895923ee10a0f51..288b40dbfa02306b726c8acbe4dc35bc46dc0ebb 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testMemcachedTool.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testMemcachedTool.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testMemcachedTool</string> </value> @@ -43,10 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 79, 2: Arguments number differs from overridden \'login\' method (arguments-differ)</string> - <string>W:106, 6: Unused variable \'memcache\' (unused-variable)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -56,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -75,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -84,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationMessageModule.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationMessageModule.py index 680051f92b836833bf1ea3afdad4428877ac0899..094bf0f437c3e486fe45f633ed6fdaed5c7de311 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationMessageModule.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationMessageModule.py @@ -39,12 +39,9 @@ class TestNotificationMessageModule(ERP5TypeTestCase): def getBusinessTemplateList(self): return ('erp5_base',) - def createUser(self, name, role_list): - self.portal.acl_users._doAddUser(name, self.newPassword(), role_list, []) - def afterSetUp(self): - self.createUser('erp5user', ['Auditor', 'Author']) - self.createUser('manager', ['Manager']) + self.portal.acl_users._doAddUser('erp5user', self.newPassword(), ['Auditor', 'Author'], []) + self.portal.acl_users._doAddUser('manager', self.newPassword(), ['Manager'], []) self.portal.email_from_address = 'site@example.invalid' self.loginByUserName('erp5user') @@ -130,7 +127,7 @@ class TestNotificationMessageModule(ERP5TypeTestCase): text_content_substitution_mapping_method_id= 'NotificationMessage_getDummySubstitionMapping') - mime, text = doc.convert('txt', + _, text = doc.convert('txt', substitution_method_parameter_dict=dict(a='b')) self.assertEqual('substitution text: b', text.rstrip()) @@ -148,7 +145,7 @@ class TestNotificationMessageModule(ERP5TypeTestCase): text_content_substitution_mapping_method_id= 'NotificationMessage_getDummySubstitionMapping') - mime, text = doc.convert('txt') + _, text = doc.convert('txt') self.assertEqual('substitution text: b', text.rstrip()) def test_safe_substitution_content(self): @@ -167,7 +164,7 @@ class TestNotificationMessageModule(ERP5TypeTestCase): text_content_substitution_mapping_method_id= 'NotificationMessage_getDummySubstitionMapping') - mime, text = doc.convert('txt') + _, text = doc.convert('txt') self.assertEqual('substitution text: ${b}', text.rstrip()) self.assertEqual('${b}', doc.asSubjectText()) diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationMessageModule.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationMessageModule.xml index 6fc60727e9a71eb4f144e7269d43076ca9c4fbbe..682c69c2894c760f3a137cf632f258064ee69ccc 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationMessageModule.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationMessageModule.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testNotificationMessageModule</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5.tests.testNotificationMessageModule</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testNotificationMessageModule</string> </value> @@ -37,12 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 49, 2: Arguments number differs from overridden \'createUser\' method (arguments-differ)</string> - <string>W:149, 4: Unused variable \'mime\' (unused-variable)</string> - <string>W:168, 4: Unused variable \'mime\' (unused-variable)</string> - <string>W:187, 4: Unused variable \'mime\' (unused-variable)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -52,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -71,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -80,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationTool.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationTool.py index 1d5936f760fcfdfdacc56c459a9845cd88c798e3..e793070cbd7b0ea6fd1c876bc3e6a59e11b8dedb 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationTool.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationTool.py @@ -38,7 +38,7 @@ from email.header import decode_header, make_header from email.utils import parseaddr # Copied from ERP5Type/patches/CMFMailIn.py -def decode_email(file): +def decode_email(file_): # Prepare result theMail = { 'attachment_list': [], @@ -47,9 +47,9 @@ def decode_email(file): 'headers': {} } # Get Message - msg = email.message_from_string(file) + msg = email.message_from_string(file_) # Back up original file - theMail['__original__'] = file + theMail['__original__'] = file_ # Recode headers to UTF-8 if needed for key, value in msg.items(): decoded_value_list = decode_header(value) @@ -61,7 +61,7 @@ def decode_email(file): 'to', 'from', 'cc', 'sender', 'reply-to'): header_field = theMail['headers'].get(header) if header_field: - theMail['headers'][header] = parseaddr(header_field)[1] + theMail['headers'][header] = parseaddr(header_field)[1] # Get attachments body_found = 0 for part in msg.walk(): @@ -107,7 +107,7 @@ class TestNotificationTool(ERP5TypeTestCase): def getTitle(self): return "Notification Tool" - def createUser(self, name, role_list): + def createUser(self, name, role_list): # pylint:disable=arguments-differ user_folder = self.getPortal().acl_users user_folder._doAddUser(name, 'password', role_list, []) @@ -196,8 +196,8 @@ class TestNotificationTool(ERP5TypeTestCase): self.portal.portal_notifications.sendMessage( recipient=sequence['user_a_id'], subject='Subject', message='Message') last_message = self.portal.MailHost._last_message - self.assertNotEquals((), last_message) - mfrom, mto, messageText = last_message + self.assertNotEqual(last_message, ()) + mfrom, mto, _ = last_message self.assertEqual('Portal Administrator <site@example.invalid>', mfrom) self.assertEqual(['userA@example.invalid'], mto) @@ -236,8 +236,8 @@ class TestNotificationTool(ERP5TypeTestCase): self.portal.portal_notifications.sendMessage( subject='Subject', message='Message') last_message = self.portal.MailHost._last_message - self.assertNotEquals((), last_message) - mfrom, mto, messageText = last_message + self.assertNotEqual(last_message, ()) + mfrom, mto, _ = last_message self.assertEqual('Portal Administrator <site@example.invalid>', mfrom) self.assertEqual(['site@example.invalid'], mto) @@ -249,8 +249,8 @@ class TestNotificationTool(ERP5TypeTestCase): self.portal.portal_notifications.sendMessage( recipient=sequence['user_a_id'], subject='Subject', ) last_message = self.portal.MailHost._last_message - self.assertNotEquals((), last_message) - mfrom, mto, messageText = last_message + self.assertNotEqual(last_message, ()) + mfrom, mto, _ = last_message self.assertEqual('Portal Administrator <site@example.invalid>', mfrom) self.assertEqual(['userA@example.invalid'], mto) @@ -272,7 +272,7 @@ class TestNotificationTool(ERP5TypeTestCase): self.portal.portal_notifications.sendMessage( recipient=sequence['user_a_id'], subject='Subject', message='Message') last_message = self.portal.MailHost._last_message - self.assertNotEquals((), last_message) + self.assertNotEqual(last_message, ()) mfrom, mto, messageText = last_message self.assertEqual('Portal Administrator <site@example.invalid>', mfrom) self.assertEqual(['userA@example.invalid'], mto) @@ -313,7 +313,7 @@ class TestNotificationTool(ERP5TypeTestCase): ]) last_message = self.portal.MailHost._last_message - self.assertNotEquals((), last_message) + self.assertNotEqual(last_message, ()) mfrom, mto, messageText = last_message self.assertEqual('Portal Administrator <site@example.invalid>', mfrom) self.assertEqual(['userA@example.invalid'], mto) @@ -345,14 +345,14 @@ class TestNotificationTool(ERP5TypeTestCase): recipient=[sequence['user_a_id'], sequence['user_b_id']], subject='Subject', message='Message') last_message = self.portal.MailHost._last_message - self.assertNotEquals((), last_message) - mfrom, mto, messageText = last_message + self.assertNotEqual(last_message, ()) + mfrom, mto, _ = last_message self.assertEqual('Portal Administrator <site@example.invalid>', mfrom) self.assertEqual(['userB@example.invalid'], mto) previous_message = self.portal.MailHost._previous_message - self.assertNotEquals((), previous_message) - mfrom, mto, messageText = previous_message + self.assertNotEqual(last_message, ()) + mfrom, mto, _ = previous_message self.assertEqual('Portal Administrator <site@example.invalid>', mfrom) self.assertEqual(['userA@example.invalid'], mto) @@ -400,7 +400,7 @@ class TestNotificationTool(ERP5TypeTestCase): self.portal.portal_notifications.sendMessage( recipient=person.getObject(), subject='Subject', message='Message') last_message = self.portal.MailHost._last_message - self.assertNotEquals((), last_message) + self.assertNotEqual(last_message, ()) mfrom, mto, messageText = last_message self.assertEqual('Portal Administrator <site@example.invalid>', mfrom) self.assertEqual(['userA@example.invalid'], mto) @@ -434,7 +434,7 @@ Yes, I will go.""" recipient=sequence['user_a_id'], subject='Subject', message_text_format='text/plain', message=message) last_message = self.portal.MailHost._last_message - self.assertNotEquals((), last_message) + self.assertNotEqual(last_message, ()) mfrom, mto, messageText = last_message self.assertEqual('Portal Administrator <site@example.invalid>', mfrom) self.assertEqual(['userA@example.invalid'], mto) @@ -493,7 +493,7 @@ Yes, I will go.""" self.portal.portal_notifications.sendMessage( recipient=sequence['user_a_id'], subject='Subject', message='Message') last_message = self.portal.MailHost._last_message - self.assertNotEquals((), last_message) + self.assertNotEqual(last_message, ()) def test_permission_on_recipient_not_needed(self): """Notification Tool can be used to send Messages even when user does not diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationTool.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationTool.xml index 17d7a568bfc8f12879846e7870ec13d02fd0ec0a..a273861b829d74d7b41754b215e919b99213249c 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationTool.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testNotificationTool.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testNotificationTool</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5.tests.testNotificationTool</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testNotificationTool</string> </value> @@ -37,15 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 64, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string> - <string>W: 41, 17: Redefining built-in \'file\' (redefined-builtin)</string> - <string>W:110, 2: Arguments number differs from overridden \'createUser\' method (arguments-differ)</string> - <string>W:200, 16: Unused variable \'messageText\' (unused-variable)</string> - <string>W:240, 16: Unused variable \'messageText\' (unused-variable)</string> - <string>W:253, 16: Unused variable \'messageText\' (unused-variable)</string> - <string>W:349, 16: Unused variable \'messageText\' (unused-variable)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -55,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -74,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -83,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testSessionTool.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testSessionTool.py index 0f4d9ada5a4c65eeea63d12132f0c566899ef438..6cd35e973c01ec9cdf080b00d9645e66a59dfd6d 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testSessionTool.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testSessionTool.py @@ -29,7 +29,6 @@ import unittest from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase -from AccessControl.SecurityManagement import newSecurityManager from Products.ERP5Type.tests.Sequence import SequenceList from erp5.component.tool.SessionTool import SESSION_CACHE_FACTORY from string import letters as LETTERS @@ -47,27 +46,6 @@ class TestSessionTool(ERP5TypeTestCase): session_id = "123456789" - def getTitle(self): - return "Session Tool" - - def afterSetUp(self): - # create a Memcached Plugin - memcached_tool = self.portal.portal_memcached - #create Memcache Plugin - if getattr(memcached_tool, 'default_memcached_plugin', None) is None: - memcached_tool.newContent(id='default_memcached_plugin', - portal_type='Memcached Plugin', - int_index=0, - url_string='127.0.0.1:11211') - self.login() - - def login(self): - uf = self.portal.acl_users - uf._doAddUser('ivan', '', ['Manager'], []) - uf._doAddUser('ERP5TypeTestCase', '', ['Manager'], []) - user = uf.getUserById('ivan').__of__(uf) - newSecurityManager(None, user) - def _changeCachePlugin(self, portal_type, storage_duration = 86400): """ Change current cache plugin with new one. """ portal_caches = self.portal.portal_caches diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testSessionTool.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testSessionTool.xml index 938b12f1773a57afa87a3d6c35d9b9844ce3020f..01cacb1c9a03d40d27b777ecc31213f9972092e4 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testSessionTool.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testSessionTool.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testSessionTool</string> </value> @@ -43,9 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 70, 2: Arguments number differs from overridden \'login\' method (arguments-differ)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -55,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -74,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -83,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimeout.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimeout.py index 359410f7718ca03548f6f4b20bc3c9c7a503b306..9823b443da945ecb5796b01e9e681543559b978d 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimeout.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimeout.py @@ -75,4 +75,4 @@ class TestTimeout(ERP5TypeTestCase): with Deadline(1.0): time.sleep(2) with self.assertRaises(TimeoutReachedError): - [x.getObject() for x in self.portal.portal_templates.searchFolder()] + _ = [x.getObject() for x in self.portal.portal_templates.searchFolder()] diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimeout.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimeout.xml index 1c9448e76bebbc170cb63ef2051f5f072da85154..56beb36abfd389c0f5bd2cc8ee858b05c945fae0 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimeout.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimeout.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testTimeout</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5Type.tests.testTimeout</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testTimeout</string> </value> @@ -37,9 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 78, 8: Expression "[x.getObject() for x in self.portal.portal_templates.searchFolder()]" is assigned to nothing (expression-not-assigned)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -49,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -68,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -77,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimerService.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimerService.py index cd9ab656dcf3ff3cd6c208033222abadb16b6543..34650038ec5fc26ef083f40f260e9e88f1d3988a 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimerService.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimerService.py @@ -26,14 +26,12 @@ # ############################################################################## -import unittest - from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase -from AccessControl.SecurityManagement import newSecurityManager, \ - noSecurityManager +from AccessControl.SecurityManagement import noSecurityManager from AccessControl.ZopeGuards import guarded_apply, guarded_getattr from zExceptions import Unauthorized + class TestTimerService(ERP5TypeTestCase): """ Test TimerService-related features. Maybe this should be put in TimerService @@ -41,20 +39,6 @@ class TestTimerService(ERP5TypeTestCase): idea to put an ERP5-type test in it. """ - def getTitle(self): - return "TimerService" - - def getBusinessTemplateList(self): - """ - """ - return () - - def afterSetUp(self): - uf = self.portal.acl_users - uf._doAddUser('rc', '', ['Manager'], []) - user = uf.getUserById('rc').__of__(uf) - newSecurityManager(None, user) - def test_01_checkAnonymousProcessing(self): """ Test whether a timer can be invoked by anonymous. @@ -63,14 +47,9 @@ class TestTimerService(ERP5TypeTestCase): timer_service = self.app.Control_Panel.timer_service process_timer = guarded_getattr(timer_service, 'process_timer') try: - guarded_apply(process_timer, (0,)) + guarded_apply(process_timer, (0,)) except Unauthorized: - self.fail('calling process_timer is unauthorized') - except: - # Do not care about any exception but unauthorized. - pass - -def test_suite(): - suite = unittest.TestSuite() - suite.addTest(unittest.makeSuite(TestTimerService)) - return suite + self.fail('calling process_timer is unauthorized') + except Exception: + # Do not care about any exception but unauthorized. + pass diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimerService.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimerService.xml index 72008e33db6c2444c5ab494c844be2b18f86b104..d4ead95f625256a4e3df13adbc06e1b988903467 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimerService.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTimerService.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testTimerService</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5Type.tests.testTimerService</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testTimerService</string> </value> @@ -37,12 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 66, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string> - <string>W: 68, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string> - <string>W: 71, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string> - <string>W: 69, 4: No exception type(s) specified (bare-except)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -52,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -71,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -80,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTransactionalVariable.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTransactionalVariable.py index 0e2fed6db09148f717957369154c5dccdda873e3..e685742c6c1744a506c5852f6d617709a56974b0 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTransactionalVariable.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTransactionalVariable.py @@ -31,74 +31,74 @@ from Products.ERP5Type.TransactionalVariable import getTransactionalVariable class TestTransactionalVariable(TestCase): - from transaction import abort, commit + from transaction import abort, commit - def test_01_DictInterface(self): - """Check if a transaction variable behaves in the same way as a dict. """ + def test_01_DictInterface(self): + """Check if a transaction variable behaves in the same way as a dict. """ - tv = getTransactionalVariable() + tv = getTransactionalVariable() - # Test frequently used dict methods. This does not cover everything, - # but should be enough. - tv.clear() - self.assertEqual(len(tv), 0) - with self.assertRaises(KeyError): - tv['toto'] + # Test frequently used dict methods. This does not cover everything, + # but should be enough. + tv.clear() + self.assertEqual(len(tv), 0) + with self.assertRaises(KeyError): + _ = tv['toto'] - tv['toto'] = 'titi' - self.assertEqual(len(tv), 1) - self.assertEqual(tv['toto'], 'titi') + tv['toto'] = 'titi' + self.assertEqual(len(tv), 1) + self.assertEqual(tv['toto'], 'titi') - self.assertIsNone(tv.get('foo')) - tv.setdefault('foo', 'bar') - self.assertEqual(len(tv), 2) - self.assertEqual(tv['foo'], 'bar') + self.assertIsNone(tv.get('foo')) + tv.setdefault('foo', 'bar') + self.assertEqual(len(tv), 2) + self.assertEqual(tv['foo'], 'bar') - self.assertIn('foo', tv) - del tv['foo'] - self.assertNotIn('foo', tv) - self.assertEqual(len(tv), 1) + self.assertIn('foo', tv) + del tv['foo'] + self.assertNotIn('foo', tv) + self.assertEqual(len(tv), 1) - def test_02_Expiration(self): - """Check if a transaction variable does not persist over multiple - transactions. - """ - tv = getTransactionalVariable() - tv.clear() - self.assertEqual(len(tv), 0) + def test_02_Expiration(self): + """Check if a transaction variable does not persist over multiple + transactions. + """ + tv = getTransactionalVariable() + tv.clear() + self.assertEqual(len(tv), 0) - # Commit and check. - tv['toto'] = 'titi' - self.assertEqual(tv['toto'], 'titi') - self.commit() - self.assertNotIn('toto', tv) + # Commit and check. + tv['toto'] = 'titi' + self.assertEqual(tv['toto'], 'titi') + self.commit() + self.assertNotIn('toto', tv) - # Abort and check. - tv['toto'] = 'titi' - self.assertEqual(tv['toto'], 'titi') - self.abort() - self.assertNotIn('toto', tv) + # Abort and check. + tv['toto'] = 'titi' + self.assertEqual(tv['toto'], 'titi') + self.abort() + self.assertNotIn('toto', tv) - def test_03_Durability(self): - """Check if a transaction variable does not disappear within the same - transaction. - """ - tv = getTransactionalVariable() - tv.clear() - self.assertEqual(len(tv), 0) + def test_03_Durability(self): + """Check if a transaction variable does not disappear within the same + transaction. + """ + tv = getTransactionalVariable() + tv.clear() + self.assertEqual(len(tv), 0) - # Set both a transaction variable and a volatile attribute, - # in order to detect the difference between their behaviors. - tv['toto'] = 'titi' - self.assertEqual(tv['toto'], 'titi') - app = self.app - vattr = '_v_erp5type_test_durability' - setattr(app, vattr, 'dummy') - self.assertEqual(getattr(app, vattr), 'dummy') + # Set both a transaction variable and a volatile attribute, + # in order to detect the difference between their behaviors. + tv['toto'] = 'titi' + self.assertEqual(tv['toto'], 'titi') + app = self.app + vattr = '_v_erp5type_test_durability' + setattr(app, vattr, 'dummy') + self.assertEqual(getattr(app, vattr), 'dummy') - # Force to minimize the connection cache so that volatile attributes - # and unghostified objects are discarded. - app._p_jar.cacheMinimize() - self.assertIn('toto', tv) - self.assertEqual(tv['toto'], 'titi') - self.assertIsNone(getattr(app, vattr, None)) + # Force to minimize the connection cache so that volatile attributes + # and unghostified objects are discarded. + app._p_jar.cacheMinimize() + self.assertIn('toto', tv) + self.assertEqual(tv['toto'], 'titi') + self.assertIsNone(getattr(app, vattr, None)) diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTransactionalVariable.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTransactionalVariable.xml index 5c3cfdbde3bde503cca15aee8c31ac58b2ca4fb9..997e2e14ae2c4efe3b2688b84d5a471f172bb9a8 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTransactionalVariable.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTransactionalVariable.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testTransactionalVariable</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5Type.tests.testTransactionalVariable</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testTransactionalVariable</string> </value> @@ -37,56 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 34, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 36, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 37, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 39, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 43, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 44, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 45, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 46, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string> - <string>W: 48, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 49, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 50, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 52, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 53, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 54, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 55, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 57, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 58, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 59, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 60, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 62, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 63, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 66, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 67, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 68, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 71, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 72, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 73, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 74, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 77, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 78, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 79, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 80, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 82, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string> - <string>W: 83, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 86, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 87, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 88, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 92, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 93, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 94, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 95, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 96, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 97, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:101, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:102, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:103, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W:104, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string> - <string>W: 46, 8: Statement seems to have no effect (pointless-statement)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -96,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -115,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -124,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTrashTool.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTrashTool.py index 45ad601d462ae6081cb397ce68917a67dff1be6c..17ca218496bf6788b2f5d2799821bb4d3b8742be 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTrashTool.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTrashTool.py @@ -53,13 +53,8 @@ class TestTrashTool(ERP5TypeTestCase): return 1 def afterSetUp(self): - self.login() - portal = self.getPortal() - catalog_tool = self.getCatalogTool() - - def login(self): - uf = self.getPortal().acl_users - uf._doAddUser('seb', '', ['Manager'], []) + uf = self.portal.acl_users + uf._doAddUser('seb', self.newPassword(), ['Manager'], []) user = uf.getUserById('seb').__of__(uf) newSecurityManager(None, user) @@ -81,9 +76,8 @@ class TestTrashTool(ERP5TypeTestCase): base_category = pc._getOb(bc_id, None) self.assertTrue(base_category is not None) category_list = [] - for i in xrange(10): + for _ in xrange(10): category = base_category.newContent(portal_type='Category') - self.assertTrue(category is not None) category_list.append(category.getId()) sequence.edit(category_id_list=category_list) @@ -95,13 +89,13 @@ class TestTrashTool(ERP5TypeTestCase): erp5_core = ps['erp5_core'] erp5_core.manage_addFolder(id="image") image = erp5_core._getOb("image") - f = image.manage_addFile(id="file") + image.manage_addFile(id="file") def stepCheckTrashToolExists(self, sequence=None, sequence_list=None, **kw): """ Check existence of trash tool """ - self.assertTrue(self.getTrashTool() is not None) + self.assertIsNotNone(self.getTrashTool()) def stepCreateTrashBin(self, sequence=None, sequence_list=None, **kw): """ @@ -193,11 +187,10 @@ class TestTrashTool(ERP5TypeTestCase): trash_id = sequence.get('trash_id') trash = self.getTrashTool() trashbin = trash._getOb(trash_id, None) - self.assertTrue(trashbin is not None) + self.assertIsNotNone(trashbin) # get category trash folder bc_id = sequence.get('bc_id') trashbin_objects_list = list(trashbin.objectValues()) - self.assertTrue(len(trashbin_objects_list) > 0) self.assertEqual(len(trashbin_objects_list), 1) obj = trashbin_objects_list[0] self.assertEqual(obj.getId(), 'portal_categories_items') @@ -215,11 +208,10 @@ class TestTrashTool(ERP5TypeTestCase): subcat_objects_list = (cat_object.objectIds()) self.assertNotEqual(len(subcat_objects_list), 0) categ_id_list = sequence.get('category_id_list') - for id in subcat_objects_list: - self.assertTrue(id in categ_id_list) - cat = cat_object._getOb(id, None) - self.assertTrue(cat is not None) - self.assertTrue(cat.isIndexable, 0) + for id_ in subcat_objects_list: + self.assertIn(id_, categ_id_list) + cat = cat_object._getOb(id_, None) + self.assertTrue(cat.isIndexable) self.assertEqual(cat.getPortalType(), 'Category') def stepCheckFolderObjectBackup(self, sequence=None, sequence_list=None, **kw): @@ -230,7 +222,6 @@ class TestTrashTool(ERP5TypeTestCase): trash = self.getTrashTool() trashbin = trash._getOb(trash_id, None) self.assertTrue(trashbin is not None) - bc_id = sequence.get('bc_id') trashbin_objects_list = list(trashbin.objectValues()) self.assertTrue(len(trashbin_objects_list) > 0) self.assertEqual(len(trashbin_objects_list), 1) @@ -318,8 +309,6 @@ class TestTrashTool(ERP5TypeTestCase): bc_id = sequence.get('bc_id') pc = self.getCategoryTool() base_category = pc._getOb(bc_id, None) - self.assertTrue(base_category is not None) - subobjects_ids = base_category.objectIds() bc_path = base_category.getPath().split('/')[2:-1] # check backup backup_subobjects_ids = trash.backupObject(trashbin, bc_path, bc_id, save=1, keep_subobjects=1) diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTrashTool.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTrashTool.xml index e5e66d2ffe27ac85b605ce6c2f7bdfa882af660b..badad026f4e6fec9ebfb2fef73df862a73c12cd4 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTrashTool.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testTrashTool.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testTrashTool</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5.tests.testTrashTool</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testTrashTool</string> </value> @@ -37,16 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 57, 4: Unused variable \'portal\' (unused-variable)</string> - <string>W: 58, 4: Unused variable \'catalog_tool\' (unused-variable)</string> - <string>W: 60, 2: Arguments number differs from overridden \'login\' method (arguments-differ)</string> - <string>W: 84, 8: Unused variable \'i\' (unused-variable)</string> - <string>W: 98, 4: Unused variable \'f\' (unused-variable)</string> - <string>W:218, 8: Redefining built-in \'id\' (redefined-builtin)</string> - <string>W:233, 4: Unused variable \'bc_id\' (unused-variable)</string> - <string>W:322, 4: Unused variable \'subobjects_ids\' (unused-variable)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -56,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -75,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -84,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testWorkflowHistoryList.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testWorkflowHistoryList.py index 66559ab589bfbb3a3812f09bc288f91678fdc325..f5a9b161c928106d0ccdefbf6c13c6ab8ad04f7d 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testWorkflowHistoryList.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testWorkflowHistoryList.py @@ -94,7 +94,7 @@ class TestWorkflowHistoryList(TestCase): a = EXPECTED[item] except IndexError: with self.assertRaises(IndexError): - ddl[item] + _ = ddl[item] else: assert a != [], a self.assertEqual(a, ddl[item]) @@ -102,16 +102,16 @@ class TestWorkflowHistoryList(TestCase): i = COUNT + 1 for i in xrange(-i, i): - check[i] - check[-50:10] - check[:20:3] - check[5:40] - check[32::4] - check[::-1] - check[-5::-7] - check[50:40:-1] - check[30:-50:-4] - check[:30:-3] + _ = check[i] + _ = check[-50:10] + _ = check[:20:3] + _ = check[5:40] + _ = check[32::4] + _ = check[::-1] + _ = check[-5::-7] + _ = check[50:40:-1] + _ = check[30:-50:-4] + _ = check[:30:-3] self.assertFalse(ddl[-5:30]) self.assertFalse(ddl[30:-5:-1]) @@ -129,8 +129,7 @@ class TestWorkflowHistoryList(TestCase): @fixed_count_bucket def test_01_DoublyLinkList(self): - EXPECTED = range(COUNT) - self.checkList(new(DoublyLinkList, EXPECTED)) + self.checkList(new(DoublyLinkList, range(COUNT))) @fixed_count_bucket def test_02_LegacyWorkflowHistoryList(self): @@ -205,10 +204,10 @@ class TestDedup(ERP5TypeTestCase): self.login() deduped = [] def dedupStrings(obj): - new = orig_dedupStrings(obj) - self.assertEqual(new, obj) - deduped.append(len(new)) - return new + new_obj = orig_dedupStrings(obj) + self.assertEqual(new_obj, obj) + deduped.append(len(new_obj)) + return new_obj from Products.ERP5Type import Workflow orig_dedupStrings = Workflow.dedupStrings try: diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testWorkflowHistoryList.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testWorkflowHistoryList.xml index 0d88bf346248c2a10e591352aa91f31e6cd37d92..2f45ef51b3a273b86e0b46ee44924f481c97d4ab 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testWorkflowHistoryList.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testWorkflowHistoryList.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testWorkflowHistoryList</string> </value> @@ -43,21 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 97, 12: Statement seems to have no effect (pointless-statement)</string> - <string>W:105, 6: Statement seems to have no effect (pointless-statement)</string> - <string>W:106, 4: Statement seems to have no effect (pointless-statement)</string> - <string>W:107, 4: Statement seems to have no effect (pointless-statement)</string> - <string>W:108, 4: Statement seems to have no effect (pointless-statement)</string> - <string>W:109, 4: Statement seems to have no effect (pointless-statement)</string> - <string>W:110, 4: Statement seems to have no effect (pointless-statement)</string> - <string>W:111, 4: Statement seems to have no effect (pointless-statement)</string> - <string>W:112, 4: Statement seems to have no effect (pointless-statement)</string> - <string>W:113, 4: Statement seems to have no effect (pointless-statement)</string> - <string>W:114, 4: Statement seems to have no effect (pointless-statement)</string> - <string>W:132, 4: Redefining name \'EXPECTED\' from outer scope (line 76) (redefined-outer-name)</string> - <string>W:206, 6: Redefining name \'new\' from outer scope (line 55) (redefined-outer-name)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -67,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -86,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -95,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testXMLPickle.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testXMLPickle.py index efbcc2b241a6190e114eff73ef21a94c9977174a..c89ee988ea5a187d84c2bf01601f49f47e46b489 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testXMLPickle.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testXMLPickle.py @@ -78,7 +78,7 @@ class TestXMLPickle(unittest.TestCase): reconstructed_obj = pickle.loads(reconstructed_pickled_data) self.assert_(reconstructed_obj.__class__ is DummyClass) - self.assert_(type(getattr(reconstructed_obj, 'data', None)) is list) + self.assert_(type(getattr(reconstructed_obj, 'data', None)) is list) # pylint:disable=unidiomatic-typecheck self.assertEqual(reconstructed_obj.data[0], 1) self.assert_(reconstructed_obj.data[1] is reconstructed_obj) self.assert_(reconstructed_obj.data[2] is reconstructed_obj.data) diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testXMLPickle.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testXMLPickle.xml index bd4c2f93a1a225f3c62a1f426938868353927c50..8cfaea2f1c4707269a982a408b3e704093d10dda 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testXMLPickle.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testXMLPickle.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testXMLPickle</string> </value> @@ -43,9 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 81, 17: Using type() instead of isinstance() for a typecheck. (unidiomatic-typecheck)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -55,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -74,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -83,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testZODBHistory.py b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testZODBHistory.py index 77e9c6ed4f80594c7fc6e3bfeba36882b0bb1c9d..4818956ebe3239e81878ee82aa2cf044ca312f99 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testZODBHistory.py +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testZODBHistory.py @@ -58,7 +58,7 @@ class TestZODBHistory(ERP5TypeTestCase): preference = preference_tool.newContent(id="zodb_history_test_preference", portal_type="Preference") if preference.getPreferenceState() != "enabled": - preference.enable() + preference.enable() def addOrganisation(self, organisation_id): """ Add an organisation """ @@ -69,19 +69,9 @@ class TestZODBHistory(ERP5TypeTestCase): def setUpUser(self): """ Set up a user to test normal users can use this function. """ - self.addUser('tatuya') - - def addUser(self, user_name, role=['Member', 'Owner', 'Assignor']): - """ Create a test user.""" uf = self.portal.acl_users - if not uf.getUserById(user_name): - uf._doAddUser(user_name, '', role, []) - - def _clearCache(self): - """ Clear cache to validate the preference modification. """ - self.portal.portal_caches.clearCache( - cache_factory_list=('erp5_ui_short', # for preference cache - )) + if not uf.getUserById('tatuya'): + uf._doAddUser('tatuya', '', ['Member', 'Owner', 'Assignor'], []) def test_01_testZODBHistory(self): """ @@ -116,7 +106,6 @@ class TestZODBHistory(ERP5TypeTestCase): # changes the limit to 100 preference.setPreferredHtmlStyleZodbHistorySize(100) - self._clearCache() self.assertEqual(preference.getPreferredHtmlStyleZodbHistorySize(), 100) history_list = org2.Base_getZODBHistoryList() # Now that the limit is 100, thus the history page show the all history diff --git a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testZODBHistory.xml b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testZODBHistory.xml index e8e8049778b52903f1d4aa2552e9acac5eba933e..5f7253eb670e07ed821cc1838ebb2ed6dcb01eac 100644 --- a/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testZODBHistory.xml +++ b/bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testZODBHistory.xml @@ -6,6 +6,12 @@ </pickle> <pickle> <dictionary> + <item> + <key> <string>_recorded_property_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> <item> <key> <string>default_reference</string> </key> <value> <string>testZODBHistory</string> </value> @@ -14,6 +20,12 @@ <key> <string>default_source_reference</string> </key> <value> <string>Products.ERP5.tests.testZODBHistory</string> </value> </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>id</string> </key> <value> <string>test.erp5.testZODBHistory</string> </value> @@ -37,10 +49,7 @@ <item> <key> <string>text_content_warning_message</string> </key> <value> - <tuple> - <string>W: 61, 0: Bad indentation. Found 7 spaces, expected 6 (bad-indentation)</string> - <string>W: 74, 2: Dangerous default value [] as argument (dangerous-default-value)</string> - </tuple> + <tuple/> </value> </item> <item> @@ -50,13 +59,28 @@ <item> <key> <string>workflow_history</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> </value> </item> </dictionary> </pickle> </record> <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> <pickle> <global name="PersistentMapping" module="Persistence.mapping"/> </pickle> @@ -69,7 +93,7 @@ <item> <key> <string>component_validation_workflow</string> </key> <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> </value> </item> </dictionary> @@ -78,7 +102,7 @@ </dictionary> </pickle> </record> - <record id="3" aka="AAAAAAAAAAM="> + <record id="4" aka="AAAAAAAAAAQ="> <pickle> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> </pickle> diff --git a/bt5/erp5_core_test/bt/skip_coding_style_test b/bt5/erp5_core_test/bt/skip_coding_style_test deleted file mode 100644 index 56a6051ca2b02b04ef92d5150c9ef600403cb1de..0000000000000000000000000000000000000000 --- a/bt5/erp5_core_test/bt/skip_coding_style_test +++ /dev/null @@ -1 +0,0 @@ -1 \ No newline at end of file diff --git a/bt5/erp5_core_test/bt/template_test_id_list b/bt5/erp5_core_test/bt/template_test_id_list index 7b9492fdbc682a4c174081a325394783600b8d48..678a49e9e0f6fa29cbfce3b65c8d7b866a3ec8a7 100644 --- a/bt5/erp5_core_test/bt/template_test_id_list +++ b/bt5/erp5_core_test/bt/template_test_id_list @@ -48,7 +48,6 @@ test.erp5.testQueryModule test.erp5.testRestrictedPythonSecurity test.erp5.testSelectionTool test.erp5.testSessionTool -test.erp5.testSQLCachedWorklist test.erp5.testTimeout test.erp5.testTimerService test.erp5.testTransactionalVariable