[Erp5-report] r18247 - in /erp5/trunk/products/ERP5/tests: testERP5Base.py testERP5HR.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Dec 11 17:15:55 CET 2007


Author: jerome
Date: Tue Dec 11 17:15:55 2007
New Revision: 18247

URL: http://svn.erp5.org?rev=18247&view=rev
Log:
rename testERP5HR in testERP5Base, because it tests erp5_base, not erp5_hr

Added:
    erp5/trunk/products/ERP5/tests/testERP5Base.py
      - copied, changed from r18218, erp5/trunk/products/ERP5/tests/testERP5HR.py
Removed:
    erp5/trunk/products/ERP5/tests/testERP5HR.py

Copied: erp5/trunk/products/ERP5/tests/testERP5Base.py (from r18218, erp5/trunk/products/ERP5/tests/testERP5HR.py)
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testERP5Base.py?p2=erp5/trunk/products/ERP5/tests/testERP5Base.py&p1=erp5/trunk/products/ERP5/tests/testERP5HR.py&r1=18218&r2=18247&rev=18247&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testERP5HR.py (original)
+++ erp5/trunk/products/ERP5/tests/testERP5Base.py Tue Dec 11 17:15:55 2007
@@ -36,12 +36,10 @@
 from AccessControl.SecurityManagement import newSecurityManager
 
 
-class TestHR(ERP5TypeTestCase):
-  """
-    ERP5 Human Ressources related tests. 
-
-  XXX actually this test suite tests person and organisation subcontent,
-  properties and acquisition, but not really HR.
+class TestERP5Base(ERP5TypeTestCase):
+  """ERP5 Base tests.
+
+  Those are tests for erp5_base business template.
   """
 
   # pseudo constants
@@ -57,7 +55,7 @@
     """
       Return the title of the current test set.
     """
-    return "ERP5 HR"
+    return "ERP5 Base"
 
 
   def getBusinessTemplateList(self):
@@ -77,6 +75,7 @@
     self.portal_categories = self.getCategoryTool()
     self.portal_catalog    = self.getCatalogTool()
     self.createCategories()
+    # self.login_as_member()
 
 
 
@@ -93,6 +92,14 @@
     user = user_folder.getUserById(user_name).__of__(user_folder)
     newSecurityManager(None, user)
 
+  def login_as_member(self):
+    """Create a new member user and login.
+    """
+    user_name = 'member_user'
+    user_folder = self.getPortal().acl_users
+    user_folder._doAddUser(user_name, '', ['Member', 'Author', 'Assignor'], [])
+    user = user_folder.getUserById(user_name).__of__(user_folder)
+    newSecurityManager(None, user)
 
   def createCategories(self):
     """
@@ -418,15 +425,12 @@
     self.assertEquals( organisation.getDefaultAddressRegion()
                      , default_address.getRegion()
                      )
-#     self.assertEquals( organisation.getDefaultAddressRegionTitle() # XXX Why ?
-#                      , default_address.getRegionTitle()
-#                      )
-#     self.assertEquals( organisation.getDefaultAddressRegionValue()
-#                      , region_object
-#                      )
-#     self.assertEquals( default_address.getRegionValue()
-#                      , region_object
-#                      )
+    self.assertEquals( organisation.getDefaultAddressRegionTitle()
+                     , default_address.getRegionTitle()
+                     )
+    self.assertEquals( default_address.getRegionValue()
+                     , region_object
+                     )
     self.assertEquals( organisation.getDefaultAddressZipCode()
                      , default_address.getZipCode()
                      )
@@ -918,5 +922,5 @@
 
 def test_suite():
   suite = unittest.TestSuite()
-  suite.addTest(unittest.makeSuite(TestHR))
+  suite.addTest(unittest.makeSuite(TestERP5Base))
   return suite

Removed: erp5/trunk/products/ERP5/tests/testERP5HR.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testERP5HR.py?rev=18246&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/tests/testERP5HR.py (original)
+++ erp5/trunk/products/ERP5/tests/testERP5HR.py (removed)
@@ -1,922 +1,0 @@
-##############################################################################
-#
-# Copyright (c) 2005 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Kevin Deldycke <kevin_AT_nexedi_DOT_com>
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsability of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# garantees and support are strongly adviced to contract a Free Software
-# Service Company
-#
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-##############################################################################
-
-
-import unittest
-
-from DateTime import DateTime
-from Products.ERP5Type.Utils import convertToUpperCase
-from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
-from Products.ERP5Type.tests.Sequence import SequenceList
-from AccessControl.SecurityManagement import newSecurityManager
-
-
-class TestHR(ERP5TypeTestCase):
-  """
-    ERP5 Human Ressources related tests. 
-
-  XXX actually this test suite tests person and organisation subcontent,
-  properties and acquisition, but not really HR.
-  """
-
-  # pseudo constants
-  RUN_ALL_TEST = 1
-  QUIET = 1
-
-
-  ##################################
-  ##  ZopeTestCase Skeleton
-  ##################################
-
-  def getTitle(self):
-    """
-      Return the title of the current test set.
-    """
-    return "ERP5 HR"
-
-
-  def getBusinessTemplateList(self):
-    """
-      Return the list of required business templates.
-    """
-    return ('erp5_base',)
-
-
-  def afterSetUp(self, quiet=QUIET, run=RUN_ALL_TEST):
-    """
-      Initialize the ERP5 site.
-    """
-    self.login()
-    self.datetime          = DateTime()
-    self.portal            = self.getPortal()
-    self.portal_categories = self.getCategoryTool()
-    self.portal_catalog    = self.getCatalogTool()
-    self.createCategories()
-
-
-
-  ##################################
-  ##  Usefull methods
-  ##################################
-
-  def login(self):
-    """Create a new manager user and login.
-    """
-    user_name = 'kevin'
-    user_folder = self.getPortal().acl_users
-    user_folder._doAddUser(user_name, '', ['Manager', 'Owner', 'Assignor'], [])
-    user = user_folder.getUserById(user_name).__of__(user_folder)
-    newSecurityManager(None, user)
-
-
-  def createCategories(self):
-    """
-      Create some categories for testing.
-    """
-    self.category_list = [
-                         # Grade categories
-                           {'path' : 'grade/director'
-                           ,'title': 'Director'
-                           }
-                         , {'path' : 'grade/engineer'
-                           ,'title': 'Engineer'
-                           }
-
-                         # Function categories
-                         , {'path' : 'function/hq'
-                           ,'title': 'Headquarters'
-                           }
-                         , {'path' : 'function/warehouse'
-                           ,'title': 'Warehouse'
-                           }
-                         , {'path' : 'function/research_center'
-                           ,'title': 'Research Center'
-                           }
-
-                         # Activity categories
-                         , {'path' : 'activity/media'
-                           ,'title': 'Media'
-                           }
-                         , {'path' : 'activity/software'
-                           ,'title': 'Software'
-                           }
-                         , {'path' : 'activity/mechanics'
-                           ,'title': 'Mechanics'
-                           }
-                         , {'path' : 'activity/mechanics/aerospace'
-                           ,'title': 'Aerospace'
-                           }
-                         , {'path' : 'activity/mechanics/automotive'
-                           ,'title': 'Automotive'
-                           }
-
-                         # Group categories
-                         , {'path' : 'group/nexedi'
-                           ,'title': 'Nexedi'
-                           }
-                         , {'path' : 'group/nexedi/storever'
-                           ,'title': 'Storever'
-                           }
-                         , {'path' : 'group/nexedi/rentalinux'
-                           ,'title': 'Rentalinux'
-                           }
-
-                         # Role categories
-                         , {'path' : 'role/client'
-                           ,'title': 'Client'
-                           }
-                         , {'path' : 'role/supplier'
-                           ,'title': 'Supplier'
-                           }
-                         , {'path' : 'role/internal'
-                           ,'title': 'Internal'
-                           }
-
-                         # Site categories
-                         , {'path' : 'site/production/madrid'
-                           ,'title': 'Madrid Production Site'
-                           }
-                         , {'path' : 'site/distibution/paris'
-                           ,'title': 'Paris Distribution Site'
-                           }
-                         , {'path' : 'site/distibution/tokyo'
-                           ,'title': 'Tokyo Distribution Site'
-                           }
-                         , {'path' : 'site/distibution/new_york'
-                           ,'title': 'New York Distribution Site'
-                           }
-
-                         # Skill categories
-                         , {'path' : 'skill/design/graphic'
-                           ,'title': 'Graphic'
-                           }
-                         , {'path' : 'skill/design/sound'
-                           ,'title': 'Sound'
-                           }
-                         , {'path' : 'skill/it/consulting'
-                           ,'title': 'Consulting'
-                           }
-                         , {'path' : 'skill/it/programming'
-                           ,'title': 'Programming'
-                           }
-
-                         # Region categories
-                         , {'path' : 'region/europe/france'
-                           ,'title': 'France'
-                           }
-                         , {'path' : 'region/europe/germany'
-                           ,'title': 'Germany'
-                           }
-                         , {'path' : 'region/america/canada'
-                           ,'title': 'Canada'
-                           }
-                         , {'path' : 'region/america/brazil'
-                           ,'title': 'Brazil'
-                           }
-
-                         # Salary Level categories
-                         , {'path' : 'salary_level/france/1/A'
-                           ,'title': '1.A'
-                           }
-                         , {'path' : 'salary_level/france/1/B'
-                           ,'title': '1.B'
-                           }
-                         , {'path' : 'salary_level/france/1/C'
-                           ,'title': '1.C'
-                           }
-                         , {'path' : 'salary_level/france/2'
-                           ,'title': '2'
-                           }
-                         ]
-
-    # Create categories
-    # Note : this code was taken from the CategoryTool_importCategoryFile python
-    #        script (packaged in erp5_core).
-    for category in self.category_list:
-      keys = category.keys()
-      if 'path' in keys:
-        base_path_obj = self.portal_categories
-        is_base_category = True
-        for category_id in category['path'].split('/'):
-          # The current category is not existing
-          if category_id not in base_path_obj.contentIds():
-            # Create the category
-            if is_base_category:
-              category_type = 'Base Category'
-            else:
-              category_type = 'Category'
-            base_path_obj.newContent( portal_type       = category_type
-                                    , id                = category_id
-                                    )
-          base_path_obj = base_path_obj[category_id]
-          is_base_category = False
-        new_category = base_path_obj
-
-        # Set the category properties
-        for key in keys:
-          if key != 'path':
-            method_id = "set" + convertToUpperCase(key)
-            value = category[key]
-            if value not in ('', None):
-              if hasattr(new_category, method_id):
-                method = getattr(new_category, method_id)
-                method(value.encode('UTF-8'))
-
-
-  def getCategoryList(self, base_category=None):
-    """
-      Get a list of categories with same base categories.
-    """
-    categories = []
-    if base_category != None:
-      for category in self.category_list:
-        if category["path"].split('/')[0] == base_category:
-          categories.append(category)
-    return categories
-
-
-
-  ##################################
-  ##  Basic steps
-  ##################################
-
-  def stepCreateOrganisation(self, sequence=None, sequence_list=None, **kw):
-    """
-      Create an organisation.
-    """
-    portal_type = 'Organisation'
-    organisation_module = self.portal.getDefaultModule(portal_type)
-    organisation = organisation_module.newContent(portal_type=portal_type,
-                                                  title='A new organisation')
-    sequence.edit(organisation = organisation)
-
-
-  def stepSetOrganisationCategories(self, sequence=None,
-                                    sequence_list=None, **kw):
-    """
-      Set & Check default organisation categories 
-      (function, activity, site, group...).
-    """
-    organisation = sequence.get('organisation')
-
-    # Set & Check function
-    function_categories = self.getCategoryList(base_category='function')
-    function_path   = function_categories[0]['path']
-    function_title  = function_categories[0]['title']
-    function_object = self.portal_categories.resolveCategory(function_path)
-    organisation.setFunction(function_path)
-    self.assertEquals(organisation.getFunction()     , function_path)
-    self.assertEquals(organisation.getFunctionTitle(), function_title)
-    self.assertEquals(organisation.getFunctionValue(), function_object)
-
-    # Set & Check activity
-    activity_categories = self.getCategoryList(base_category='activity')
-    activity_path   = activity_categories[0]['path']
-    activity_title  = activity_categories[0]['title']
-    activity_object = self.portal_categories.resolveCategory(activity_path)
-    organisation.setActivity(activity_path)
-    self.assertEquals(organisation.getActivity()     , activity_path)
-    self.assertEquals(organisation.getActivityTitle(), activity_title)
-    self.assertEquals(organisation.getActivityValue(), activity_object)
-
-    # Set & Check group
-    group_categories = self.getCategoryList(base_category='group')
-    group_path   = group_categories[0]['path']
-    group_title  = group_categories[0]['title']
-    group_object = self.portal_categories.resolveCategory(group_path)
-    organisation.setGroup(group_path)
-    self.assertEquals(organisation.getGroup()     , group_path)
-    self.assertEquals(organisation.getGroupTitle(), group_title)
-    self.assertEquals(organisation.getGroupValue(), group_object)
-
-    # Set & Check role
-    role_categories = self.getCategoryList(base_category='role')
-    role_path   = role_categories[0]['path']
-    role_title  = role_categories[0]['title']
-    role_object = self.portal_categories.resolveCategory(role_path)
-    organisation.setRole(role_path)
-    self.assertEquals(organisation.getRole()     , role_path)
-    self.assertEquals(organisation.getRoleTitle(), role_title)
-    self.assertEquals(organisation.getRoleValue(), role_object)
-
-    # Set & Check site
-    site_categories = self.getCategoryList(base_category='site')
-    site_path   = site_categories[0]['path']
-    site_title  = site_categories[0]['title']
-    site_object = self.portal_categories.resolveCategory(site_path)
-    organisation.setSite(site_path)
-    self.assertEquals(organisation.getSite()     , site_path)
-    self.assertEquals(organisation.getSiteTitle(), site_title)
-    self.assertEquals(organisation.getSiteValue(), site_object)
-
-    # Set & Check skills
-    skill_categories = self.getCategoryList(base_category='skill')
-    skill_path_list   = []
-    skill_title_list  = []
-    skill_object_list = []
-    for skill in skill_categories[:2]:
-      skill_path   = skill['path']
-      skill_title  = skill['title']
-      skill_object = self.portal_categories.resolveCategory(skill_path)
-      skill_path_list.append(skill_path)
-      skill_title_list.append(skill_title)
-      skill_object_list.append(skill_object)
-    organisation.setSkillList(skill_path_list)
-    self.failIfDifferentSet(organisation.getSkillList()     , skill_path_list)
-    self.failIfDifferentSet(organisation.getSkillTitleList(), skill_title_list)
-    self.failIfDifferentSet(organisation.getSkillValueList(), skill_object_list)
-
-
-  def stepResetOrganisationCategories(self, sequence=None,
-                                      sequence_list=None, **kw):
-    """
-      Reset default organisation categories (function, activity, site, group...).
-    """
-    organisation = sequence.get('organisation')
-
-    organisation.setFunction(None)
-    organisation.setActivity(None)
-    organisation.setGroup(None)
-    organisation.setRole(None)
-    organisation.setSite(None)
-    organisation.setSkillList(None)
-
-    self.assertEquals(organisation.getFunction()       , None)
-    self.assertEquals(organisation.getActivity()       , None)
-    self.assertEquals(organisation.getGroup()          , None)
-    self.assertEquals(organisation.getRole()           , None)
-    self.assertEquals(organisation.getSite()           , None)
-    self.failIfDifferentSet(organisation.getSkillList(), [])
-
-    self.assertEquals(organisation.getFunctionTitle()       , None)
-    self.assertEquals(organisation.getActivityTitle()       , None)
-    self.assertEquals(organisation.getGroupTitle()          , None)
-    self.assertEquals(organisation.getRoleTitle()           , None)
-    self.assertEquals(organisation.getSiteTitle()           , None)
-    self.failIfDifferentSet(organisation.getSkillTitleList(), [])
-
-    self.assertEquals(organisation.getFunctionValue()       , None)
-    self.assertEquals(organisation.getActivityValue()       , None)
-    self.assertEquals(organisation.getGroupValue()          , None)
-    self.assertEquals(organisation.getRoleValue()           , None)
-    self.assertEquals(organisation.getSiteValue()           , None)
-    self.failIfDifferentSet(organisation.getSkillValueList(), [])
-
-
-  def stepSetOrganisationAddress(self, sequence=None, sequence_list=None, **kw):
-    """
-      Set organisation address and test acquired properties and categories
-      from the Address sub-object.
-    """
-    organisation = sequence.get('organisation')
-
-    region = self.getCategoryList(base_category='region')[0]
-    region_path   = region["path"]
-    region_title  = region["title"]
-    region_object = self.portal_categories.resolveCategory(region_path)
-    organisation.setDefaultAddressCity('Lille')
-    organisation.setDefaultAddressRegion(region_path)
-    organisation.setDefaultAddressZipCode('59000')
-    organisation.setDefaultAddressStreetAddress('42, rue des gnous')
-    organisation.setDefaultTelephoneText('+55(0)66-5555') # Phone follows default conventions
-    organisation.setDefaultFaxText('+55(0)69-1337')
-    organisation.setDefaultEmailText('kevin at truc-bidule.com')
-
-    self.failUnless('default_address' in organisation.contentIds())
-    default_address = organisation.default_address
-    self.assertEquals(default_address.getPortalType(), 'Address')
-    self.assertEquals(organisation.getDefaultAddressValue(), default_address)
-
-    self.assertEquals( organisation.getDefaultAddressCity()
-                     , default_address.getCity()
-                     )
-    self.assertEquals( organisation.getDefaultAddressRegion()
-                     , default_address.getRegion()
-                     )
-#     self.assertEquals( organisation.getDefaultAddressRegionTitle() # XXX Why ?
-#                      , default_address.getRegionTitle()
-#                      )
-#     self.assertEquals( organisation.getDefaultAddressRegionValue()
-#                      , region_object
-#                      )
-#     self.assertEquals( default_address.getRegionValue()
-#                      , region_object
-#                      )
-    self.assertEquals( organisation.getDefaultAddressZipCode()
-                     , default_address.getZipCode()
-                     )
-    self.assertEquals( organisation.getDefaultAddressStreetAddress()
-                     , default_address.getStreetAddress()
-                     )
-    
-    # Organisation's region is acquired from the Address object
-    self.assertEquals( organisation.getRegion()
-                     , default_address.getRegion()
-                     )
-    
-    self.failUnless('default_telephone' in organisation.contentIds())
-    default_telephone = organisation.default_telephone
-    self.assertEquals(default_telephone.getPortalType(), 'Telephone')
-    self.assertEquals( organisation.getDefaultTelephoneText()
-                     , default_telephone.asText()
-                     )
-                     
-    self.failUnless('default_fax' in organisation.contentIds())
-    default_fax = organisation.default_fax
-    self.assertEquals(default_fax.getPortalType(), 'Fax')
-    self.assertEquals( organisation.getDefaultFaxText()
-                     , default_fax.asText()
-                     )
-    
-    self.failUnless('default_email' in organisation.contentIds())
-    default_email = organisation.default_email
-    self.assertEquals(default_email.getPortalType(), 'Email')
-    self.assertEquals( organisation.getDefaultEmailText()
-                     , default_email.asText()
-                     )
-
-  def stepCreatePerson(self, sequence=None, sequence_list=None, **kw):
-    """
-      Create a person.
-    """
-    portal_type = 'Person'
-    person_module = self.portal.getDefaultModule(portal_type)
-    person = person_module.newContent( portal_type       = portal_type
-                                     )
-    sequence.edit(person = person)
-
-
-  def stepSetPersonCareer(self, sequence=None, sequence_list=None, **kw):
-    """
-      Set & Check default person properties acquired through default career.
-    """
-    person = sequence.get('person')
-    organisation = sequence.get('organisation')
-    
-    # Set subordination
-    person.setCareerSubordinationValue(organisation)
-    self.assertEquals(person.getCareerSubordinationValue(), organisation)
-    
-    # Set & Check simple properties with 'Career' prefix
-    person.setCareerTitle('A brand new career step')
-    person.setCareerDescription(
-        'This career step correspond to my arrival at Nexedi as employee')
-    self.assertEquals(person.getCareerTitle()      , 'A brand new career step')
-    self.assertEquals(person.getCareerDescription(),
-        'This career step correspond to my arrival at Nexedi as employee')
-
-    dummy_date1 = self.datetime + 10
-    dummy_date2 = self.datetime + 20
-    person.setCareerStopDate(dummy_date2)
-    person.setCareerStartDate(dummy_date1)
-    person.setCareerSalaryCoefficient(1)
-    person.setCareerCollectiveAgreementTitle('SYNTEC convention')
-    person.setCareerActivity('software')
-    self.assertEquals(person.getCareerStopDate()                , dummy_date2)
-    self.assertEquals(person.getCareerStartDate()               , dummy_date1)
-    self.assertEquals(person.getCareerSalaryCoefficient()       , 1)
-    self.assertEquals(person.getCareerCollectiveAgreementTitle(), 'SYNTEC convention')
-    self.assertEquals(person.getCareerActivityTitle(), 'Software')
-
-    # Set & Check function
-    function_categories = self.getCategoryList(base_category='function')
-    function_path   = function_categories[1]['path']
-    function_title  = function_categories[1]['title']
-    function_object = self.portal_categories.resolveCategory(function_path)
-    person.setCareerFunction(function_path)
-    self.assertEquals(person.getCareerFunction()     , function_path)
-    self.assertEquals(person.getCareerFunctionTitle(), function_title)
-    self.assertEquals(person.getCareerFunctionValue(), function_object)
-    # function must be acquired on person
-    person.reindexObject(); get_transaction().commit(); self.tic()
-    self.failUnless(person in function_object.getFunctionRelatedValueList())
-
-    # Set & Check role
-    role_categories = self.getCategoryList(base_category='role')
-    role_path   = role_categories[1]['path']
-    role_title  = role_categories[1]['title']
-    role_object = self.portal_categories.resolveCategory(role_path)
-    person.setCareerRole(role_path)
-    self.assertEquals(person.getCareerRole()     , role_path)
-    self.assertEquals(person.getCareerRoleTitle(), role_title)
-    self.assertEquals(person.getCareerRoleValue(), role_object)
-    # role must be acquired on person
-    person.reindexObject(); get_transaction().commit(); self.tic()
-    self.failUnless(person in role_object.getRoleRelatedValueList())
-
-    # Set & Check grade
-    grade_categories = self.getCategoryList(base_category='grade')
-    grade_path   = grade_categories[1]['path']
-    grade_title  = grade_categories[1]['title']
-    grade_object = self.portal_categories.resolveCategory(grade_path)
-    person.setCareerGrade(grade_path)
-    self.assertEquals(person.getCareerGrade()     , grade_path)
-    self.assertEquals(person.getCareerGradeTitle(), grade_title)
-    self.assertEquals(person.getCareerGradeValue(), grade_object)
-    # grade must be acquired on person 
-    person.reindexObject(); get_transaction().commit(); self.tic()
-    self.failUnless(person in grade_object.getGradeRelatedValueList())
-
-    # Set & Check salary level
-    salary_level_categories = self.getCategoryList(
-                                base_category='salary_level')
-    salary_level_path   = salary_level_categories[1]['path']
-    salary_level_title  = salary_level_categories[1]['title']
-    salary_level_object = self.portal_categories.resolveCategory(
-                          salary_level_path)
-    person.setCareerSalaryLevel(salary_level_path)
-    self.assertEquals(person.getCareerSalaryLevel()     , salary_level_path)
-    self.assertEquals(person.getCareerSalaryLevelTitle(), salary_level_title)
-    self.assertEquals(person.getCareerSalaryLevelValue(), salary_level_object)
-    # salary_level must be acquired on person 
-    person.reindexObject(); get_transaction().commit(); self.tic()
-    self.failUnless(person in
-                   salary_level_object.getSalaryLevelRelatedValueList())
-
-    # Set & Check skills
-    skill_categories = self.getCategoryList(base_category='skill')
-    skill_path_list   = []
-    skill_title_list  = []
-    skill_object_list = []
-    for skill in skill_categories[1:3]:
-      skill_path   = skill['path']
-      skill_title  = skill['title']
-      skill_object = self.portal_categories.resolveCategory(skill_path)
-      skill_path_list.append(skill_path)
-      skill_title_list.append(skill_title)
-      skill_object_list.append(skill_object)
-    person.setCareerSkillList(skill_path_list)
-    self.failIfDifferentSet(person.getCareerSkillList()     , skill_path_list)
-    self.failIfDifferentSet(person.getCareerSkillTitleList(), skill_title_list)
-    self.failIfDifferentSet(person.getCareerSkillValueList(), skill_object_list)
-    # skill must be acquired on person 
-    person.reindexObject(); get_transaction().commit(); self.tic()
-    for skill_object in skill_object_list:
-      self.failUnless(person in skill_object.getSkillRelatedValueList())
-
-  def stepCheckPersonCareer(self, sequence=None, sequence_list=None, **kw):
-    """
-      Check the consistency of default_career properties with person
-      getters (= check the acquisition).
-    """
-    person = sequence.get('person')
-
-    # Check default career sub-object
-    self.failUnless('default_career' in person.contentIds())
-    default_career = person.default_career
-    self.assertEquals(default_career.getPortalType(), 'Career')
-
-    # Test getter with 'Career' prefix
-    self.assertEquals(person.getCareer()           , default_career.getRelativeUrl())
-    self.assertEquals(person.getCareerTitle()      , default_career.getTitle())
-    self.assertEquals(person.getCareerValue()      , default_career)
-    self.assertEquals(person.getCareerDescription(), default_career.getDescription())
-
-    self.assertEquals(person.getCareerFunction()     , default_career.getFunction())
-    self.assertEquals(person.getCareerFunctionTitle(), default_career.getFunctionTitle())
-    self.assertEquals(person.getCareerFunctionValue(), default_career.getFunctionValue())
-
-    # Test getter with no prefix (aka 'transparent' getters) on simple properties
-    #   then on category properties
-    self.assertEquals(person.getCareerStopDate()                , default_career.getStopDate())
-    self.assertEquals(person.getCareerStartDate()               , default_career.getStartDate())
-    self.assertEquals(person.getCareerSalaryCoefficient()       , default_career.getSalaryCoefficient())
-    self.assertEquals(person.getCareerCollectiveAgreementTitle(), default_career.getCollectiveAgreementTitle())
-
-    self.assertEquals(person.getCareerRole()     , default_career.getRole())
-    self.assertEquals(person.getCareerRoleTitle(), default_career.getRoleTitle())
-    self.assertEquals(person.getCareerRoleValue(), default_career.getRoleValue())
-
-    self.assertEquals(person.getCareerGrade()     , default_career.getGrade())
-    self.assertEquals(person.getCareerGradeTitle(), default_career.getGradeTitle())
-    self.assertEquals(person.getCareerGradeValue(), default_career.getGradeValue())
-    
-    self.assertEquals(person.getCareerActivity(),
-                      default_career.getActivity())
-    self.assertEquals(person.getCareerActivityTitle(),
-                      default_career.getActivityTitle())
-    self.assertEquals(person.getCareerActivityValue(),
-                      default_career.getActivityValue())
-
-    self.assertEquals(person.getCareerSalaryLevel()     , default_career.getSalaryLevel())
-    self.assertEquals(person.getCareerSalaryLevelTitle(), default_career.getSalaryLevelTitle())
-    self.assertEquals(person.getCareerSalaryLevelValue(), default_career.getSalaryLevelValue())
-
-    self.failIfDifferentSet(person.getCareerSkillList()     , default_career.getSkillList())
-    self.failIfDifferentSet(person.getCareerSkillTitleList(), default_career.getSkillTitleList())
-    self.failIfDifferentSet(person.getCareerSkillValueList(), default_career.getSkillValueList())
-
-    self.assertEquals(person.getCareerSubordination(), default_career.getSubordination())
-    # Person's subordination is acquired from default career
-    self.assertEquals(person.getSubordination(), default_career.getSubordination())
-    
-  def stepAddCareerStepInAnotherOrganisation(self, sequence=None, **kw) :
-    """Adds another career step on the person."""
-    person = sequence.get('person')
-    other_organisation = self.getOrganisationModule().newContent(
-                            portal_type = 'Organisation',
-                            title = 'Another Organistion')
-    new_career_title = 'new career title'
-    # Create a new career step.
-    person.Person_shiftDefaultCareer()
-    self.assertEquals( 2,
-          len(person.contentValues(filter={'portal_type':'Career'})))
-    person.setCareerSubordination(other_organisation.getRelativeUrl())
-    person.setCareerTitle(new_career_title)
-    
-    # Get the new and the old career, as Person_shiftDefaultCareer changes
-    # objects id, this may be the only safe way ...
-    old_career_step = None
-    new_career_step = None
-    for career in person.contentValues(filter={'portal_type':'Career'}):
-      if career.getTitle() == new_career_title :
-        new_career_step = career
-      else :
-        old_career_step = career
-    self.assertNotEquals(new_career_step, None)
-    self.assertNotEquals(old_career_step, None)
-    
-    sequence.edit( old_career_step = old_career_step,
-                   new_career_step = new_career_step,
-                   new_organisation = other_organisation,
-                   old_organisation = sequence.get('organisation') )
-
-  def stepCheckCareerSubordination (self, sequence=None, **kw) :
-    """checks that setting subordination on a career does not conflict 
-        with acquisition."""
-    person = sequence.get('person')
-    old_career_step = sequence.get('old_career_step')
-    new_career_step = sequence.get('new_career_step')
-    new_organisation = sequence.get('new_organisation')
-    old_organisation = sequence.get('old_organisation')
-    new_organisation_title = new_organisation.getTitle()
-    old_organisation_title = old_organisation.getTitle()
-    
-    self.assert_( "subordination/%s" % old_organisation.getRelativeUrl() in
-                    old_career_step.getCategoryList(),
-                '%s not in %s' % (old_organisation.getRelativeUrl(),
-                                  old_career_step.getCategoryList()))
-    self.assertEquals( old_career_step.getSubordination(),
-                       old_organisation.getRelativeUrl() )
-    self.assertEquals( old_career_step.getSubordinationTitle(),
-                       old_organisation_title )
-  
-    self.assert_( "subordination/%s" % new_organisation.getRelativeUrl() in
-                    new_career_step.getCategoryList(),
-                '%s not in %s' % (new_organisation.getRelativeUrl(),
-                                  new_career_step.getCategoryList()))
-    self.assertEquals( new_career_step.getSubordination(),
-                       new_organisation.getRelativeUrl() )
-    self.assertEquals( new_career_step.getSubordinationTitle(),
-                       new_organisation_title )
-    
-  def stepCheckChangePersonAddress(self, sequence=None, **kw) :
-    """
-    We must make sure that if we change the address of a person,
-    then it will not change the address of the organisation.
-    """
-    person = sequence.get('person')
-    organisation = sequence.get('organisation')
-    self.assertEquals(organisation.getDefaultAddressCity(),'Lille')
-    self.assertEquals(organisation.getDefaultAddressZipCode(), '59000')
-    self.assertEquals(person.getDefaultAddressCity(),'Lille')
-    self.assertEquals(person.getDefaultAddressZipCode(), '59000')
-
-    # here, the parameters we pass to edit are the same as the one acquired
-    # from the organisation, edit shouldn't do anything
-    person.edit(
-        default_address_city='Lille',
-        default_address_zip_code='59000')
-
-    self.assertEquals(person.getDefaultAddress(),
-        organisation.getDefaultAddress())
-    self.assertEquals(person.getDefaultAddressCity(),'Lille')
-    self.assertEquals(person.getDefaultAddressZipCode(), '59000')
-
-    # here, the first parameter we pass will trigger the creation of a
-    # subobject on person, and we need to make sure that the second one gets
-    # copied (when calling edit from the interface, all displayed fields are
-    # passed to edit)
-    person.edit(
-        default_address_city='La Garnache',
-        default_address_zip_code='59000')
-
-    self.assertNotEquals(person.getDefaultAddress(),
-        organisation.getDefaultAddress())
-    self.assertEquals(person.getDefaultAddressCity(),'La Garnache')
-    self.assertEquals(person.getDefaultAddressZipCode(), '59000')
-    self.assertEquals(organisation.getDefaultAddressCity(),'Lille')
-    self.assertEquals(organisation.getDefaultAddressZipCode(), '59000')
-
-  ##################################
-  ##  Tests
-  ##################################
-
-  def test_01_Organisation(self, quiet=QUIET, run=RUN_ALL_TEST):
-    """
-      Test basic behaviour of Organisation.
-    """
-    if not run: return
-    sequence_list = SequenceList()
-    step_list = [ 'stepCreateOrganisation'
-                , 'stepSetOrganisationCategories'
-                , 'stepResetOrganisationCategories'
-                , 'stepSetOrganisationAddress'
-                ]
-    sequence_string = ' '.join(step_list)
-    sequence_list.addSequenceString(sequence_string)
-    sequence_list.play(self, quiet=quiet)
-
-
-  def test_02_Person(self, quiet=QUIET, run=RUN_ALL_TEST):
-    """
-      Test basic behaviour of Person.
-    """
-    if not run: return
-    sequence_list = SequenceList()
-    step_list = [ 'stepCreatePerson'
-                , 'stepCreateOrganisation'
-                , 'stepSetPersonCareer'
-                , 'stepCheckPersonCareer'
-                ]
-    sequence_string = ' '.join(step_list)
-    sequence_list.addSequenceString(sequence_string)
-    sequence_list.play(self, quiet=quiet)
-
-  def test_03_Subordination(self, quiet=QUIET, run=RUN_ALL_TEST):
-    """
-      Tests that career steps subordination properties behave correctly
-    """
-    if not run: return
-    sequence_list = SequenceList()
-    step_list = [ 'stepCreatePerson'
-                , 'stepCreateOrganisation'
-                , 'stepSetPersonCareer'
-                , 'stepAddCareerStepInAnotherOrganisation'
-                , 'stepCheckCareerSubordination'
-                ]
-    sequence_string = ' '.join(step_list)
-    sequence_list.addSequenceString(sequence_string)
-    sequence_list.play(self, quiet=quiet)
-
-  def test_04_SubordinationAndAddress(self, quiet=QUIET, run=RUN_ALL_TEST):
-    """
-      Tests that career steps subordination properties behave correctly
-    """
-    if not run: return
-    sequence_list = SequenceList()
-    step_list = [ 'stepCreatePerson'
-                , 'stepCreateOrganisation'
-                , 'stepSetOrganisationAddress'
-                , 'stepSetPersonCareer'
-                , 'stepCheckChangePersonAddress'
-                ]
-    sequence_string = ' '.join(step_list)
-    sequence_list.addSequenceString(sequence_string)
-    sequence_list.play(self, quiet=quiet)
-
-  # Dates
-  def test_05_DatesOnPerson(self, quiet=QUIET, run=RUN_ALL_TEST):
-    """Tests dates on Person objects.
-    """
-    pers = self.getPersonModule().newContent(portal_type='Person')
-    birthday = DateTime(1999, 01, 01)
-    now = DateTime()
-    pers.edit(birthday = birthday)
-    self.assertEquals(birthday, pers.getBirthday())
-    self.assertEquals(birthday, pers.getStartDate())
-    
-    for slot in ['year', 'month', 'day', 'hour', 'minute']:
-      self.assertEquals(getattr(now, slot)(),
-                        getattr(pers.getCreationDate(), slot)(),
-                        'Wrong creation date %s' % pers.getCreationDate())
-  
-  def test_06_DatesOnOrganisation(self, quiet=QUIET, run=RUN_ALL_TEST):
-    """Tests dates on Organisation objects.
-    """
-    org = self.getOrganisationModule().newContent(portal_type='Organisation')
-    start_date = DateTime(1999, 01, 01)
-    now = DateTime()
-    org.edit(start_date = start_date)
-    self.assertEquals(start_date, org.getStartDate())
-    
-    for slot in ['year', 'month', 'day', 'hour', 'minute']:
-      self.assertEquals(getattr(now, slot)(),
-                        getattr(org.getCreationDate(), slot)(),
-                        'Wrong creation date %s' % org.getCreationDate())
-
-
-  def test_TelephoneAsText(self):
-    # Test asText method
-    pers = self.getPersonModule().newContent(portal_type='Person')
-    tel = pers.newContent(portal_type='Telephone')
-    tel.setTelephoneCountry(33)
-    tel.setTelephoneNumber(123456789)
-    self.assertEquals('+33(0)-123456789', tel.asText())
-
-
-  def test_TelephoneUrl(self):
-    # http://www.rfc-editor.org/rfc/rfc3966.txt
-    pers = self.getPersonModule().newContent(portal_type='Person')
-    tel = pers.newContent(portal_type='Telephone')
-    tel.setTelephoneCountry(33)
-    tel.setTelephoneNumber(123456789)
-    self.assertEquals('tel:+33123456789', tel.asURL())
-    
-    tel.setTelephoneCountry(None)
-    tel.setTelephoneNumber(123456789)
-    self.assertEquals('tel:0123456789', tel.asURL())
-
-
-  def test_EmptyTelephoneAsText(self):
-    # asText method returns an empty string for empty telephones
-    pers = self.getPersonModule().newContent(portal_type='Person')
-    self.assertEquals('', pers.newContent(portal_type='Telephone').asText())
-
-
-  def test_EmptyFaxAsText(self):
-    # asText method returns an empty string for empty faxes
-    pers = self.getPersonModule().newContent(portal_type='Person')
-    self.assertEquals('', pers.newContent(portal_type='Fax').asText())
-
-
-  def test_EmailAsURL(self):
-    # asURL method works on email
-    pers = self.getPersonModule().newContent(portal_type='Person')
-    pers.setDefaultEmailText('nobody at example.com')
-    email = pers.getDefaultEmailValue()
-    self.assertEquals('mailto:nobody at example.com', email.asURL())
-    self.assertEquals('mailto:nobody at example.com',
-                      pers.Entity_getDefaultEmailAsURL())
-
-  def test_getTranslatedId(self):
-    pers = self.getPersonModule().newContent(
-                portal_type='Person', id='default_email')
-    self.assertEquals(None, pers.getTranslatedId())
-    pers.setDefaultEmailText('nobody at example.com')
-    email = pers.getDefaultEmailValue()
-    self.assertEquals('Default Email', str(email.getTranslatedId()))
-    
-  def test_SubordinationAcquisitionAndFunction(self):
-    # function is acquired from the subordination, organisation function are
-    # usually only nodes, and persons functions are leaves.
-    function_node = self.portal.portal_categories.function.newContent(
-         portal_type='Category', id='function_node', title='Function Node')
-    function_leave = function_node.newContent(
-         portal_type='Category', id='function_leave', title='Function Leave')
-    self.portal.portal_caches.clearAllCache()
-    organisation = self.getOrganisationModule().newContent(
-                                  portal_type='Organisation',
-                                  function_value=function_node)
-    person = self.getPersonModule().newContent(portal_type='Person',
-                            career_subordination_value=organisation)
-    # on Organisation_view, the user usually select node for functions:
-    self.assertEquals([['', ''], ['Function Node', 'function_node']],
-      organisation.Organisation_view.my_function.get_value('items'))
-    
-    # on Person_view, the user select leaves for functions:
-    field = person.Person_view.my_career_function
-    self.assertTrue('function_node' not in [x[1] for x in
-                          field.get_value('items')])
-    self.assertTrue('function_node/function_leave' in [x[1] for x in
-                          field.get_value('items')])
-    # person acquire function from the organisation
-    self.assertEquals(person.getFunctionValue(), function_node)
-    # but the user interface does not show the acquired value in this case
-    self.assertEquals('', field.get_value('default'))
-    # (the field is working)
-    person.setDefaultCareerFunctionValue(function_leave)
-    self.assertEquals(person.getFunctionValue(), function_leave)
-    self.assertEquals('function_node/function_leave',
-                      field.get_value('default'))
-
-
-def test_suite():
-  suite = unittest.TestSuite()
-  suite.addTest(unittest.makeSuite(TestHR))
-  return suite




More information about the Erp5-report mailing list