From 5a888647c101758658c04dc5c9c7fabf7662501d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Fri, 14 Oct 2005 18:05:57 +0000
Subject: [PATCH] Check If Multiple method_id Can Be Hooked

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@4029 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/tests/testInteractionWorkflow.py | 71 +++++++++++++++----
 1 file changed, 58 insertions(+), 13 deletions(-)

diff --git a/product/ERP5/tests/testInteractionWorkflow.py b/product/ERP5/tests/testInteractionWorkflow.py
index 4a97c8a88e..869d9a5f83 100755
--- a/product/ERP5/tests/testInteractionWorkflow.py
+++ b/product/ERP5/tests/testInteractionWorkflow.py
@@ -110,7 +110,8 @@ class TestInteractionWorkflow(ERP5TypeTestCase):
     portal_type = self.getTypeTool()['Organisation']
     portal_type.base_category_list = ['size']
     organisation_module = self.getOrganisationModule()
-    self.organisation = organisation_module.newContent(portal_type=self.portal_type)
+    self.organisation = organisation_module.newContent(
+                          portal_type = self.portal_type)
     self.organisation.immediateReindexObject()
 
 
@@ -121,11 +122,13 @@ class TestInteractionWorkflow(ERP5TypeTestCase):
     self.getWorkflowTool().manage_addWorkflow(workflow_type=wf_type,id=id)
     wf = self.getWorkflowTool()[id]
     self.wf = wf
-    wf.scripts.manage_addProduct['PythonScripts'].manage_addPythonScript(id='afterEdit')
+    wf.scripts.manage_addProduct['PythonScripts']\
+                  .manage_addPythonScript(id='afterEdit')
     self.script = wf.scripts['afterEdit']
     wf.interactions.addInteraction(id='edit')
     self.interaction = wf.interactions['edit']
-    self.getWorkflowTool().setChainForPortalTypes([self.portal_type],'test_workflow')
+    self.getWorkflowTool().setChainForPortalTypes(
+                  [self.portal_type],'test_workflow')
     _aq_reset() # XXX Fails XXX _setLastId not found when doing newContent
 
 
@@ -143,7 +146,10 @@ class TestInteractionWorkflow(ERP5TypeTestCase):
     if not quiet:
       self.logMessage('Interactions On Edit')
     self.createInteractionWorkflow()
-    self.interaction.setProperties('afterEdit',method_id='edit',after_script_name=('afterEdit',))
+    self.interaction.setProperties(
+            'afterEdit',
+            method_id='edit',
+            after_script_name=('afterEdit',))
     #body = "sci.object.setDescription('toto')"
     params = 'sci,**kw'
     body = "context = sci.object\n" +\
@@ -158,9 +164,13 @@ class TestInteractionWorkflow(ERP5TypeTestCase):
   def test_03(self, quiet=0, run=run_all_test):
     if not run: return
     if not quiet:
-      self.logMessage('Interactions, Edit Set Description and also After Script')
+      self.logMessage(
+        'Interactions, Edit Set Description and also After Script')
     self.createInteractionWorkflow()
-    self.interaction.setProperties('afterEdit',method_id='edit',after_script_name=('afterEdit',))
+    self.interaction.setProperties(
+            'afterEdit',
+            method_id='edit',
+            after_script_name=('afterEdit',))
     body = "context = sci.object\n" +\
            "context.setDescription('toto')"
     params = 'sci,**kw'
@@ -176,7 +186,10 @@ class TestInteractionWorkflow(ERP5TypeTestCase):
     if not quiet:
       self.logMessage('Interactions, Automatic Workflow Method')
     self.createInteractionWorkflow()
-    self.interaction.setProperties('afterEdit',method_id='doSomethingStupid',after_script_name=('afterEdit',))
+    self.interaction.setProperties(
+            'afterEdit',
+            method_id='doSomethingStupid',
+            after_script_name=('afterEdit',))
     body = "context = sci.object\n" +\
            "context.setDescription('toto')"
     params = 'sci,**kw'
@@ -190,9 +203,13 @@ class TestInteractionWorkflow(ERP5TypeTestCase):
   def test_05(self, quiet=0, run=run_all_test):
     if not run: return
     if not quiet:
-      self.logMessage('Interactions, Automatic Workflow Method With Extra Base Category')
+      self.logMessage(
+        'Interactions, Automatic Workflow Method With Extra Base Category')
     self.createInteractionWorkflow()
-    self.interaction.setProperties('afterEdit',method_id='setSizeList _setSizeList',after_script_name=('afterEdit',))
+    self.interaction.setProperties(
+            'afterEdit',
+            method_id='setSizeList _setSizeList',
+            after_script_name=('afterEdit',))
     body = "context = sci.object\n" +\
            "context.setDescription('toto')"
     params = 'sci,**kw'
@@ -208,7 +225,10 @@ class TestInteractionWorkflow(ERP5TypeTestCase):
     if not quiet:
       self.logMessage('Interactions, Check If There Is Only One Call')
     self.createInteractionWorkflow()
-    self.interaction.setProperties('afterEdit',method_id='edit',after_script_name=('afterEdit',))
+    self.interaction.setProperties(
+            'afterEdit',
+            method_id='edit',
+            after_script_name=('afterEdit',))
     params = 'sci,**kw'
     body = "context = sci.object\n" +\
            "description = context.getDescription()\n" +\
@@ -231,9 +251,9 @@ class TestInteractionWorkflow(ERP5TypeTestCase):
       self.logMessage('Interactions, Check If The Return Value Is Not Altered')
     self.createInteractionWorkflow()
     self.interaction.setProperties(
-                'afterEdit',
-                method_id='newContent',
-                after_script_name=('afterEdit',))
+            'afterEdit',
+            method_id='newContent',
+            after_script_name=('afterEdit',))
     params = 'sci,**kw'
     body = "context = sci.object\n" +\
            "return 3\n"
@@ -247,6 +267,31 @@ class TestInteractionWorkflow(ERP5TypeTestCase):
     self.assertNotEquals(dummy_bank_account, 3)
     self.assertEquals(dummy_bank_account.getPortalType(), 'Bank Account')
 
+  def test_08(self, quiet=0, run=run_all_test):
+    if not run: return
+    if not quiet:
+      self.logMessage('Interactions, Check If Multiple method_id Can Be Hooked')
+    self.createInteractionWorkflow()
+    self.interaction.setProperties(
+            'afterEdit',
+            method_id='edit doSomethingStupid',
+            after_script_name=('afterEdit',))
+    params = 'sci,**kw'
+    body = "context = sci.object\n" +\
+           "description = context.getDescription()\n" +\
+           "if description is None:\n" +\
+           "  description = ''\n" +\
+           "context.setDescription(description + 'a')"
+    self.script.ZPythonScript_edit(params,body)
+    self.createData()
+    organisation = self.organisation
+    organisation.setDescription(None)
+    self.assertEquals(organisation.getDescription(),None)
+    organisation.edit()
+    self.assertEquals(organisation.getDescription(),'a')
+    organisation.doSomethingStupid()
+    self.assertEquals(organisation.getDescription(),'aa')
+    
 if __name__ == '__main__':
     framework()
 else:
-- 
2.30.9