[Erp5-report] r13886 - in /erp5/trunk/products/ERP5: Document/ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Apr 3 12:01:41 CEST 2007


Author: aurel
Date: Tue Apr  3 12:01:39 2007
New Revision: 13886

URL: http://svn.erp5.org?rev=13886&view=rev
Log:
check at build of bt that portal types properties exists in site, add test for this

Modified:
    erp5/trunk/products/ERP5/Document/BusinessTemplate.py
    erp5/trunk/products/ERP5/tests/testBusinessTemplate.py

Modified: erp5/trunk/products/ERP5/Document/BusinessTemplate.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/BusinessTemplate.py?rev=13886&r1=13885&r2=13886&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/BusinessTemplate.py (original)
+++ erp5/trunk/products/ERP5/Document/BusinessTemplate.py Tue Apr  3 12:01:39 2007
@@ -1509,8 +1509,17 @@
   class_property = 'allowed_content_types'
 
   def build(self, context, **kw):
-    for key in self._archive.keys():
+    types_tool = self.getPortalObject().portal_types
+    types_list = list(types_tool.objectIds())
+    for key in self._archive.keys():      
       portal_type, allowed_type = key.split(' | ')
+      # check properties corresponds to what is defined in site
+      if not portal_type in types_list:
+        raise ValueError, "Portal Type %s not found in site" %(portal_type,)
+      ob = types_tool._getOb(portal_type)
+      prop_value = getattr(ob, self.class_property, ())
+      if not allowed_type in prop_value:
+        raise ValueError, "Property %s not found in portal type %s" %(allowed_type, portal_type)
       if self._objects.has_key(portal_type):
         allowed_list = self._objects[portal_type]
         allowed_list.append(allowed_type)

Modified: erp5/trunk/products/ERP5/tests/testBusinessTemplate.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testBusinessTemplate.py?rev=13886&r1=13885&r2=13886&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testBusinessTemplate.py (original)
+++ erp5/trunk/products/ERP5/tests/testBusinessTemplate.py Tue Apr  3 12:01:39 2007
@@ -404,6 +404,17 @@
     self.failUnless(bt is not None)
     bt.getPortalTypesProperties()
 
+  def stepFillWrongPortalTypesFields(self, sequence=None, sequence_list=None, **kw):
+    """
+    Fill portal types properties field in business template with wrong values
+    """
+    bt = sequence.get('current_bt', None)
+    self.failUnless(bt is not None)
+    bt.getPortalTypesProperties()
+    bt_allowed_content_type_list = list(getattr(self, 'template_portal_type_allowed_content_type', []) or [])
+    bt_allowed_content_type_list.append("Geek Module | BusinessTemplate")
+    bt.setProperty('template_portal_type_allowed_content_type', bt_allowed_content_type_list)
+    
   # module
   def stepCreateModuleAndObjects(self, sequence=None, sequence_list=None, **kw):
     """
@@ -1964,6 +1975,14 @@
     self.assertRaises(AttributeError,
                       template.build)
 
+  def stepCheckBuildWithBadPortalTypeFailed(self, sequence=None, sequence_list=None, **kw):
+    """
+    Build Business Template
+    """
+    template = sequence.get('current_bt')
+    self.assertRaises(ValueError,
+                      template.build)
+
   def stepBuildBusinessTemplate(self, sequence=None, sequence_list=None, **kw):
     """
     Build Business Template
@@ -2251,6 +2270,31 @@
                        '
     sequence_list.addSequenceString(sequence_string)
     sequence_list.play(self, quiet=quiet)
+
+  def test_021_BusinessTemplateWithPortalTypesAdnWrongValues(self, quiet=quiet, run=run_all_test):
+    if not run: return
+    if not quiet:
+      message = 'Test Business Template With Portal Types and Bad Values'
+      ZopeTestCase._print('\n%s ' % message)
+      LOG('Testing... ', 0, message)
+    sequence_list = SequenceList()
+    sequence_string = '\
+                       CreatePortalType \
+                       CreateNewBusinessTemplate \
+                       UseExportBusinessTemplate \
+                       AddPortalTypeToBusinessTemplate \
+                       FillPortalTypesFields \
+                       FillWrongPortalTypesFields \
+                       CheckModifiedBuildingState \
+                       CheckNotInstalledInstallationState \
+                       CheckBuildWithBadPortalTypeFailed \
+                       RemovePortalType \
+                       RemoveBusinessTemplate \
+                       RemoveAllTrashBins \
+                       '
+    sequence_list.addSequenceString(sequence_string)
+    sequence_list.play(self, quiet=quiet)
+
 
   # test of skins
   def test_03_BusinessTemplateWithSkins(self, quiet=quiet, run=run_all_test):




More information about the Erp5-report mailing list