[Erp5-report] r43101 nicolas.dumazet - /erp5/trunk/products/ERP5Type/tests/testERP5Type.py

nobody at svn.erp5.org nobody at svn.erp5.org
Sat Feb 5 10:37:24 CET 2011


Author: nicolas.dumazet
Date: Sat Feb  5 10:37:24 2011
New Revision: 43101

URL: http://svn.erp5.org?rev=43101&view=rev
Log:
testERP5Type was messing heavily with workflow chains and relying on
transaction aborts to restore them. That's hackish, and fails as soon as
an "innocent" hand comes in and adds a commit in a test.

* save and restore workflow chain for Person at beginning and start of test
* use setChainForPortalTypes instead of manage_changeWorkflows: the
  first call alters the chain for one portal type, whereas the second affects
  ALL portal types, effectively removing all chains from all portal types not
  passed along in props=. It meant that after each manage_changeWorkflows the
  test was running virtually without any workflow but those of Person, causing
  "fake" failures in other, correct, tests.

This eventually fixes the last failures of testERP5Type

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=43101&r1=43100&r2=43101&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testERP5Type.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/testERP5Type.py [utf8] Sat Feb  5 10:37:24 2011
@@ -131,6 +131,9 @@ class TestERP5Type(PropertySheetTestCase
       self.getTypesTool().getTypeInfo('Person').filter_content_types = 0
       transaction.commit()
 
+      # save workflow chain for Person type
+      self.person_chain = self.getWorkflowTool().getChainFor('Person')
+
     def beforeTearDown(self):
       transaction.abort()
       for module in [ self.getPersonModule(),
@@ -143,6 +146,10 @@ class TestERP5Type(PropertySheetTestCase
         self.getTypesTool().getTypeInfo('Person').acquire_local_roles = self.person_acquire_local_roles
         self.portal.portal_caches.clearAllCache()
 
+      # restore workflows for other tests
+      self.getWorkflowTool().setChainForPortalTypes(
+        ['Person'], self.person_chain)
+
       super(TestERP5Type, self).beforeTearDown()
 
     def loginWithNoRole(self):
@@ -2436,25 +2443,21 @@ class TestERP5Type(PropertySheetTestCase
 
     def test_aq_reset_on_workflow_chain_change(self):
       doc = self.portal.person_module.newContent(portal_type='Person')
-      ti = self.getTypesTool()['Person']
       self.assertFalse(hasattr(doc, 'getCausalityState'))
       # chain the portal type with a workflow that has 'causality_state' as
       # state variable name, this should regenerate the getCausalityState
       # accessor. This test might have to be updated whenever
       # delivery_causality_workflow changes.
-      self.portal.portal_workflow.manage_changeWorkflows(
-          default_chain='',
-          props=dict(chain_Person='delivery_causality_workflow'))
+      self.getWorkflowTool().setChainForPortalTypes(
+        ['Person'], ('delivery_causality_workflow'))
 
       transaction.commit()
       self.assertTrue(hasattr(doc, 'getCausalityState'))
 
     def test_aq_reset_on_workflow_method_change(self):
       doc = self.portal.person_module.newContent(portal_type='Person')
-      ti = self.getTypesTool()['Person']
-      self.portal.portal_workflow.manage_changeWorkflows(
-          default_chain='',
-          props=dict(chain_Person='delivery_causality_workflow'))
+      self.getWorkflowTool().setChainForPortalTypes(
+        ['Person'], ('delivery_causality_workflow'))
 
       transaction.commit()
       self.assertTrue(hasattr(doc, 'diverge'))
@@ -2475,10 +2478,8 @@ class TestERP5Type(PropertySheetTestCase
 
     def test_aq_reset_on_workflow_state_variable_change(self):
       doc = self.portal.person_module.newContent(portal_type='Person')
-      ti = self.getTypesTool()['Person']
-      self.portal.portal_workflow.manage_changeWorkflows(
-          default_chain='',
-          props=dict(chain_Person='delivery_causality_workflow'))
+      self.getWorkflowTool().setChainForPortalTypes(
+        ['Person'], ('delivery_causality_workflow'))
 
       transaction.commit()
       self.assertTrue(hasattr(doc, 'getCausalityState'))



More information about the Erp5-report mailing list