[Erp5-report] r10021 - /erp5/trunk/products/ERP5Type/tests/testERP5Type.py

nobody at svn.erp5.org nobody at svn.erp5.org
Sat Sep 16 12:19:42 CEST 2006


Author: jp
Date: Sat Sep 16 12:19:41 2006
New Revision: 10021

URL: http://svn.erp5.org?rev=10021&view=rev
Log:
Full implementation of test_10_valueAccessor. Initial cleanup.

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

Modified: erp5/trunk/products/ERP5Type/tests/testERP5Type.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testERP5Type.py?rev=10021&r1=10020&r2=10021&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testERP5Type.py (original)
+++ erp5/trunk/products/ERP5Type/tests/testERP5Type.py Sat Sep 16 12:19:41 2006
@@ -19,6 +19,9 @@
 from Products.ERP5Type.Base import _aq_reset
 
 class TestERP5Type(ERP5TypeTestCase, LogInterceptor):
+
+    run_all_test = 1
+    quiet = 0
 
     # Some helper methods
 
@@ -101,7 +104,8 @@
       from Products.ERP5Type import Document
       initializeClassDynamicProperties(portal, Base)
       # Base class should now have a state method
-      #self.failUnless(hasattr(Base, 'getFirstName'))
+      # self.failUnless(hasattr(Base, 'getFirstName'))
+      # This test is now useless since methods are portal type based
     
     def test_02_AqDynamic(self):
       portal = self.getPortal()
@@ -117,7 +121,8 @@
       # Person class should now have method getFirstName
       self.failUnless(hasattr(person, 'getFirstName'))
 
-    def test_03_NewTempObject(self):
+    def test_03_NewTempObject(self, quiet=quiet, run=run_all_test):
+      if not run: return
       portal = self.getPortal()
 
       from Products.ERP5Type.Document import newTempPerson
@@ -142,7 +147,22 @@
       o.edit(tata=123)
       self.assertEquals(o.getProperty('tata'), 123)
 
-    def test_04_CategoryAccessors(self):
+    def test_04_CategoryAccessors(self, quiet=quiet, run=run_all_test):
+      """
+        This test provides basic testing of category
+        accessors using the region base category.
+
+        setRegion (with base = 0 or base =1)
+        setRegionValue
+        getRegion
+        getRegionId
+        getRegionTitle
+        getRegionRelatedList
+        getRegionRelatedValueList
+        getRegionRelatedIdList
+        getRegionRelatedTitleList
+      """
+      if not run: return
       portal = self.getPortal()
       region_category = self.getPortal().portal_categories.region
       
@@ -167,7 +187,8 @@
         person_object.reindexObject()
         category_object.reindexObject()
         self.tic()
-        self.assertEquals( person_object.getRegion(), category_relative_url)
+        self.assertEquals( person_object.getRegion(), category_id)
+        self.assertEquals( person_object.getRegion(base=1), category_relative_url)
         self.assertEquals( person_object.getRegionValue(), category_object)
         self.assertEquals( person_object.getRegionId(), category_id)
         self.assertEquals( person_object.getRegionTitle(), category_title)
@@ -196,17 +217,25 @@
                             portal_type = "Person"), [] )
         self.assertEquals( category_object.getRegionRelatedIdList(
                             portal_type = "Person"), [] )
-      
-      person_object.setRegion(category_relative_url)
+
+      # Test setRegion in default mode (base = 0)
+      person_object.setRegion(category_id)
       checkRelationSet(self)
       person_object.setRegion(None)
       checkRelationUnset(self)
+      # Test setRegion in default mode (base = 1)
+      person_object.setRegion(category_relative_url, base=1)
+      checkRelationSet(self)
+      person_object.setRegion(None)
+      checkRelationUnset(self)
+      # Test setRegion in value mode
       person_object.setRegionValue(category_object)
       checkRelationSet(self)
       person_object.setRegionValue(None)
       checkRelationUnset(self)
       
-    def test_04_setProperty(self):
+    def test_05_setProperty(self, quiet=quiet, run=run_all_test):
+      if not run: return
       portal = self.getPortal()
       module = self.getOrganisationModule()
       organisation = module.newContent(id='1', portal_type='Organisation')
@@ -216,8 +245,9 @@
       self.assertEquals(organisation.corporate_name,'Nexedi')
       self.assertEquals(organisation.default_telephone.corporate_name,'Toto')
 
-    def test_06_CachingMethod(self):
+    def test_06_CachingMethod(self, quiet=quiet, run=run_all_test):
       """Tests Caching methods."""
+      if not run: return
       cached_var1 = cached_var1_orig = 'cached_var1'
       cached_var2 = cached_var2_orig = 'cached_var2'
 
@@ -246,8 +276,9 @@
       clearCache()
       self.assertEquals(cache2(), cached_var2)
 
-    def test_07_afterCloneScript(self):
+    def test_07_afterCloneScript(self, quiet=quiet, run=run_all_test):
       """manage_afterClone can call a type based script."""
+      if not run: return
       # setup the script for Person portal type
       custom_skin = self.getPortal().portal_skins.custom
       method_id = 'Person_afterClone'
@@ -291,9 +322,10 @@
       new_orga = folder[new_id]
       self.assertEquals(new_orga.getTitle(), 'something')
       
-    def test_08_AccessorGeneration(self):
+    def test_08_AccessorGeneration(self, quiet=quiet, run=run_all_test):
       """Tests accessor generation doesn't generate error messages.
       """
+      if not run: return
       from Products.ERP5Type.Base import _aq_reset
       _aq_reset()
       self._catch_log_errors(ignored_level=INFO)
@@ -303,11 +335,12 @@
       orga.getId()
       self._ignore_log_errors()
     
-    def test_09_RenameObjects(self):
+    def test_09_RenameObjects(self, quiet=quiet, run=run_all_test):
       """Test object renaming.
       As we overloaded some parts of OFS, it's better to test again some basic
       features.
       """
+      if not run: return
       folder = self.getOrganisationModule()
       id_list = [chr(x) for x in range(ord('a'), ord('z')+1)]
       for id_ in id_list:
@@ -328,29 +361,140 @@
         new_id = '%s_new' % id_
         self.assertEquals(folder._getOb(new_id).getId(), new_id)
 
-    def test_10_valueAccessor(self):
-      """
-        The purpose of this test is to
-
+    def test_10_valueAccessor(self, quiet=quiet, run=run_all_test):
+      """
+        The purpose of this test is to make sure that category accessors
+        work as expected.
+
+        List accessors support ordering and multiple entries
+        but they are incompatible with default value
+
+        Set accessors preserve the default value but
+        they do not preserver order or multiple entries
+
+        The test is implemented for both Category and Value
+        accessors.
         The same test must be done for category accessors
         for list accessors and for acquired property accessors
       """
-      # setRegionValueList((a, b, a, b))
-      # setRegionValue((a, b, a, b))
-      # setRegionValueSet((a, b, a, b))
-      # setDefaultRegion(a)
-      # getDefaultRegion
-      # getRegion
-      # getRegionList
-      # getRegionSet
-      pass
-
-    def test_11_ConstraintNotFound(self):
+      if not run: return
+
+      if not quiet:
+        message = 'Test Category setters'
+        ZopeTestCase._print('\n '+message)
+        LOG('Testing... ', 0, message)
+
+      # Create a few categories
+      region_category = self.getPortal().portal_categories.region
+      alpha = region_category.newContent(
+              portal_type = "Category",
+              id =          "alpha",
+              title =       "Alpha System", )
+      beta = region_category.newContent(
+              portal_type = "Category",
+              id =          "beta",
+              title =       "Beta System", )
+      zeta = region_category.newContent(
+              portal_type = "Category",
+              id =          "zeta",
+              title =       "Zeta System", )
+
+      self.assertEquals(alpha.getRelativeUrl(), 'region/alpha')
+
+      alpha.immediateReindexObject()
+      beta.immediateReindexObject()
+      zeta.immediateReindexObject()
+      #self.tic() # Make sure categories are reindexed
+
+      # Create a new person
+      module = self.getPersonModule()
+      person = module.newContent(portal_type='Person')
+
+      # Value setters (list, set, default)
+      person.setRegionValue(alpha)
+      self.assertEquals(person.getRegion(), 'alpha')
+      person.setRegionValueList([alpha, alpha])
+      self.assertEquals(person.getRegionList(), ['alpha', 'alpha'])
+      person.setRegionValueSet([alpha, alpha])
+      self.assertEquals(person.getRegionSet(), ['alpha'])
+      person.setRegionValueList([alpha, beta, alpha])
+      self.assertEquals(person.getRegionList(), ['alpha', 'beta', 'alpha'])
+      person.setRegionValueSet([alpha, beta, alpha])
+      result = person.getRegionSet()
+      result.sort()
+      self.assertEquals(result, ['alpha', 'beta'])
+      person.setDefaultRegionValue(beta)
+      self.assertEquals(person.getDefaultRegion(), 'beta')
+      result = person.getRegionSet()
+      result.sort()
+      self.assertEquals(result, ['alpha', 'beta'])
+      self.assertEquals(person.getRegionList(), ['beta', 'alpha'])
+      person.setDefaultRegionValue(alpha)
+      self.assertEquals(person.getDefaultRegion(), 'alpha')
+      result = person.getRegionSet()
+      result.sort()
+      self.assertEquals(result, ['alpha', 'beta'])
+      self.assertEquals(person.getRegionList(), ['alpha', 'beta'])
+
+      # Category setters (list, set, default)
+      person.setRegion('alpha')
+      self.assertEquals(person.getRegion(), 'alpha')
+      person.setRegionList(['alpha', 'alpha'])
+      self.assertEquals(person.getRegionList(), ['alpha', 'alpha'])
+      person.setRegionSet(['alpha', 'alpha'])
+      self.assertEquals(person.getRegionSet(), ['alpha'])
+      person.setRegionList(['alpha', 'beta', 'alpha'])
+      self.assertEquals(person.getRegionList(), ['alpha', 'beta', 'alpha'])
+      person.setRegionSet(['alpha', 'beta', 'alpha'])
+      result = person.getRegionSet()
+      result.sort()
+      self.assertEquals(result, ['alpha', 'beta'])
+      person.setDefaultRegion('beta')
+      self.assertEquals(person.getDefaultRegion(), 'beta')
+      result = person.getRegionSet()
+      result.sort()
+      self.assertEquals(result, ['alpha', 'beta'])
+      self.assertEquals(person.getRegionList(), ['beta', 'alpha'])
+      person.setDefaultRegion('alpha')
+      self.assertEquals(person.getDefaultRegion(), 'alpha')
+      result = person.getRegionSet()
+      result.sort()
+      self.assertEquals(result, ['alpha', 'beta'])
+      self.assertEquals(person.getRegionList(), ['alpha', 'beta'])
+
+      # Uid setters (list, set, default)
+      person.setRegionUid(alpha.getUid())
+      self.assertEquals(person.getRegion(), 'alpha')
+      person.setRegionUidList([alpha.getUid(), alpha.getUid()])
+      self.assertEquals(person.getRegionList(), ['alpha', 'alpha'])
+      person.setRegionUidSet([alpha.getUid(), alpha.getUid()])
+      self.assertEquals(person.getRegionSet(), ['alpha'])
+      person.setRegionUidList([alpha.getUid(), beta.getUid(), alpha.getUid()])
+      self.assertEquals(person.getRegionList(), ['alpha', 'beta', 'alpha'])
+      person.setRegionUidSet([alpha.getUid(), beta.getUid(), alpha.getUid()])
+      result = person.getRegionSet()
+      result.sort()
+      self.assertEquals(result, ['alpha', 'beta'])
+      person.setDefaultRegionUid(beta.getUid())
+      self.assertEquals(person.getDefaultRegion(), 'beta')
+      result = person.getRegionSet()
+      result.sort()
+      self.assertEquals(result, ['alpha', 'beta'])
+      self.assertEquals(person.getRegionList(), ['beta', 'alpha'])
+      person.setDefaultRegionUid(alpha.getUid())
+      self.assertEquals(person.getDefaultRegion(), 'alpha')
+      result = person.getRegionSet()
+      result.sort()
+      self.assertEquals(result, ['alpha', 'beta'])
+      self.assertEquals(person.getRegionList(), ['alpha', 'beta'])
+
+    def test_11_ConstraintNotFound(self, quiet=quiet, run=run_all_test):
       """
       When a Constraint is not found while importing a PropertySheet, AttributeError 
       was raised, and generated a infinite loop.
       This is a test to make sure this will not happens any more
       """
+      if not run: return
       # We will first define a new propertysheet
       class_tool = self.getClassTool()
 




More information about the Erp5-report mailing list