diff --git a/product/ERP5Type/tests/testFolder.py b/product/ERP5Type/tests/testFolder.py index b7cf6e55a8a7ef2ce742c8b95f4571be487d835b..47f69c19b27178d30c01dd844dfa05d761733aeb 100644 --- a/product/ERP5Type/tests/testFolder.py +++ b/product/ERP5Type/tests/testFolder.py @@ -17,6 +17,7 @@ from zLOG import LOG, INFO from Products.CMFCore.tests.base.testcase import LogInterceptor from Products.ERP5Type.tests.utils import createZODBPythonScript from Products.ERP5Type.ERP5Type import ERP5TypeInformation +from Products.ERP5Type.Cache import clearCache class TestFolder(ERP5TypeTestCase, LogInterceptor): @@ -36,13 +37,17 @@ class TestFolder(ERP5TypeTestCase, LogInterceptor): Executed before each test_*. """ self.login() - self.folder = self.getPortal().newContent(id='TestFolder', portal_type='Folder') + self.folder = self.getPortal().newContent(id='TestFolder', + portal_type='Folder') + self.other_folder = self.getPortal().newContent( + id='OtherTestFolder', portal_type='Folder') def beforeTearDown(self): """ Executed after each test_*. """ self.getPortal().manage_delObjects(ids=[self.folder.getId()]) + clearCache() def newContent(self): """ @@ -95,7 +100,51 @@ class TestFolder(ERP5TypeTestCase, LogInterceptor): self.assertEquals(len(self.folder), expected_length) object = self.newContent() self.assertEquals(object.getId(), id_generator_id_list[expected_length]) + + def _setAllowedContentTypesForFolderType(self, allowed_content_types): + """Set allowed content types for Folder portal type.""" + folder_ti = self.getTypesTool()['Folder'] + folder_ti.allowed_content_types = allowed_content_types + folder_ti.filter_content_types = 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.""" + allowed_content_types_id_list = [x.getId() for + x in obj.allowedContentTypes()] + self.assertEquals(len(expected_allowed_content_types), + len(allowed_content_types_id_list), + 'expected %s and actual %s have different length' % ( + expected_allowed_content_types, + allowed_content_types_id_list + )) + for portal_type_name in expected_allowed_content_types: + self.failUnless(portal_type_name in allowed_content_types_id_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_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) + if __name__ == '__main__': framework() else: