diff --git a/product/ERP5/tests/testInteractionWorkflow.py b/product/ERP5/tests/testInteractionWorkflow.py index 869d9a5f8368467c9c74e2f2b94e097f854292b3..2744794259c1db462b502f86dc73de97855edeea 100755 --- a/product/ERP5/tests/testInteractionWorkflow.py +++ b/product/ERP5/tests/testInteractionWorkflow.py @@ -64,33 +64,10 @@ class TestInteractionWorkflow(ERP5TypeTestCase): """ return "Interaction Workflow" - - def getBusinessTemplateList(self): - """ - Return the list of business templates. - - """ - return () - - def getPortalId(self): - return self.getPortal().getId() - def logMessage(self,message): ZopeTestCase._print('\n%s ' % message) LOG('Testing... ',0,message) - def getSalePackingListModule(self): - return getattr(self.getPortal(),'sale_packing_list',None) - - def getSaleOrderModule(self): - return getattr(self.getPortal(),'sale_order',None) - - def getOrderLine(self): - return self.getSaleOrderModule()['1']['1'] - - def getPredicate(self): - return self.getSalePackingListModule()['1'] - def afterSetUp(self): self.login() #self.createData() @@ -114,10 +91,8 @@ class TestInteractionWorkflow(ERP5TypeTestCase): portal_type = self.portal_type) self.organisation.immediateReindexObject() - def createInteractionWorkflow(self): id = 'test_workflow' - #wf = InteractionWorfklowDefinition(id) wf_type = "interaction_workflow (Web-configurable interaction workflow)" self.getWorkflowTool().manage_addWorkflow(workflow_type=wf_type,id=id) wf = self.getWorkflowTool()[id] @@ -130,7 +105,26 @@ class TestInteractionWorkflow(ERP5TypeTestCase): self.getWorkflowTool().setChainForPortalTypes( [self.portal_type],'test_workflow') _aq_reset() # XXX Fails XXX _setLastId not found when doing newContent - + + def createInteractionWorkflowWithTwoInteractions(self): + id = 'test_workflow' + wf_type = "interaction_workflow (Web-configurable interaction workflow)" + 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='afterEditA') + self.scriptA = wf.scripts['afterEditA'] + wf.interactions.addInteraction(id='editA') + self.interactionA = wf.interactions['editA'] + wf.scripts.manage_addProduct['PythonScripts']\ + .manage_addPythonScript(id='afterEditB') + self.scriptB = wf.scripts['afterEditB'] + wf.interactions.addInteraction(id='editB') + self.interactionB = wf.interactions['editB'] + self.getWorkflowTool().setChainForPortalTypes( + [self.portal_type],'test_workflow') + _aq_reset() # XXX Fails XXX _setLastId not found when doing newContent def test_01(self, quiet=0, run=run_all_test): if not run: return @@ -245,7 +239,7 @@ class TestInteractionWorkflow(ERP5TypeTestCase): organisation.edit() self.assertEquals(organisation.getDescription(),'aa') - def test_07(self, quiet=0, run=0):#run_all_test): + def DISABLEDtest_07(self, quiet=0, run=run_all_test): if not run: return if not quiet: self.logMessage('Interactions, Check If The Return Value Is Not Altered') @@ -274,7 +268,7 @@ class TestInteractionWorkflow(ERP5TypeTestCase): self.createInteractionWorkflow() self.interaction.setProperties( 'afterEdit', - method_id='edit doSomethingStupid', + method_id='setCorporateName setActivityCode', after_script_name=('afterEdit',)) params = 'sci,**kw' body = "context = sci.object\n" +\ @@ -286,12 +280,82 @@ class TestInteractionWorkflow(ERP5TypeTestCase): self.createData() organisation = self.organisation organisation.setDescription(None) - self.assertEquals(organisation.getDescription(),None) - organisation.edit() + self.assertEquals(organisation.getDescription(), None) + organisation.setCorporateName('corp') self.assertEquals(organisation.getDescription(),'a') - organisation.doSomethingStupid() + organisation.setActivityCode('acode') self.assertEquals(organisation.getDescription(),'aa') + def test_09(self, quiet=0, run=run_all_test): + if not run: return + if not quiet: + self.logMessage('Interactions, Check if the same method_id '\ + 'can be hooked by two Interactions') + self.createInteractionWorkflowWithTwoInteractions() + self.interactionA.setProperties( + 'afterEditA', + method_id='edit', + after_script_name=('afterEditA',)) + self.interactionB.setProperties( + 'afterEditB', + method_id='edit', + after_script_name=('afterEditB',)) + params = 'sci,**kw' + body = "context = sci.object\n" +\ + "context.log('InteractionWF.test_09 in script', 'a')\n" +\ + "description = context.getDescription()\n" +\ + "if description is None:\n" +\ + " description = ''\n" +\ + "context.setDescription(description + 'a')" + self.scriptA.ZPythonScript_edit(params, body) + self.scriptB.ZPythonScript_edit(params, body.replace("'a'", "'b'")) + + self.createData() + organisation = self.organisation + organisation.setDescription(None) + self.assertEquals(organisation.getDescription(), None) + organisation.edit() + self.assert_(organisation.getDescription() in ('ab', 'ba'), + "description should be 'ab' or 'ba', it is %s" % + organisation.getDescription()) + organisation.setCorporateName("this should not change anything") + self.assert_(organisation.getDescription() in ('ab', 'ba'), + "description should be 'ab' or 'ba', it is %s" % + organisation.getDescription()) + + def test_10(self, quiet=0, run=run_all_test): + if not run: return + if not quiet: + self.logMessage('Interactions, check if multiple scripts can be ' + 'called') + self.createInteractionWorkflowWithTwoInteractions() + self.interactionA.setProperties( + 'afterEdit', + method_id='edit', + after_script_name=('afterEditA', 'afterEditB')) + params = 'sci,**kw' + body = "context = sci.object\n" +\ + "context.log('InteractionWF.test_10 in script', 'a')\n" +\ + "description = context.getDescription()\n" +\ + "if description is None:\n" +\ + " description = ''\n" +\ + "context.setDescription(description + 'a')" + self.scriptA.ZPythonScript_edit(params, body) + self.scriptB.ZPythonScript_edit(params, body.replace("'a'", "'b'")) + + self.createData() + organisation = self.organisation + organisation.setDescription(None) + self.assertEquals(organisation.getDescription(), None) + organisation.edit() + self.assert_(organisation.getDescription() in ('ab', 'ba'), + "description should be 'ab' or 'ba', it is %s" % + organisation.getDescription()) + organisation.setCorporateName("this should not change anything") + self.assert_(organisation.getDescription() in ('ab', 'ba'), + "description should be 'ab' or 'ba', it is %s" % + organisation.getDescription()) + if __name__ == '__main__': framework() else: