[Erp5-report] r9466 - /erp5/trunk/products/ERP5Type/tests/testFolder.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Aug 25 16:39:28 CEST 2006


Author: jerome
Date: Fri Aug 25 16:39:25 2006
New Revision: 9466

URL: http://svn.erp5.org?rev=9466&view=rev
Log:
add some test for allowedContentTypes method.


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

Modified: erp5/trunk/products/ERP5Type/tests/testFolder.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testFolder.py?rev=9466&r1=9465&r2=9466&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testFolder.py (original)
+++ erp5/trunk/products/ERP5Type/tests/testFolder.py Fri Aug 25 16:39:25 2006
@@ -17,6 +17,7 @@
 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 @@
         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 @@
         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:




More information about the Erp5-report mailing list