[Erp5-report] r41352 jm - in /erp5/trunk: bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5...

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Dec 10 17:46:57 CET 2010


Author: jm
Date: Fri Dec 10 17:46:57 2010
New Revision: 41352

URL: http://svn.erp5.org?rev=41352&view=rev
Log:
Fix TestTaskReporting

- Make start/stop date calculation by Business Process optional.
- Run TestTaskReporting with both legacy and new simulations.

Modified:
    erp5/trunk/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/TradeModelPath_view/my_trade_date.xml
    erp5/trunk/bt5/erp5_trade/bt/revision
    erp5/trunk/products/ERP5/Document/BusinessProcess.py
    erp5/trunk/products/ERP5/tests/testTaskReporting.py
    erp5/trunk/products/ERP5Legacy/tests/testLegacyProjectAndTask.py

Modified: erp5/trunk/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/TradeModelPath_view/my_trade_date.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/TradeModelPath_view/my_trade_date.xml?rev=41352&r1=41351&r2=41352&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/TradeModelPath_view/my_trade_date.xml [utf8] (original)
+++ erp5/trunk/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/TradeModelPath_view/my_trade_date.xml [utf8] Fri Dec 10 17:46:57 2010
@@ -10,6 +10,7 @@
             <key> <string>delegated_list</string> </key>
             <value>
               <list>
+                <string>description</string>
                 <string>items</string>
                 <string>title</string>
               </list>
@@ -83,6 +84,11 @@
             <value>
               <dictionary>
                 <item>
+                    <key> <string>description</string> </key>
+                    <value> <string>Compute expected start and stop dates according to the specified Trade Phase.\n
+If unset, no calculation is done (i.e. dates are taken from the movement generated by the rule).</string> </value>
+                </item>
+                <item>
                     <key> <string>field_id</string> </key>
                     <value> <string>my_view_mode_end_of</string> </value>
                 </item>

Modified: erp5/trunk/bt5/erp5_trade/bt/revision
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_trade/bt/revision?rev=41352&r1=41351&r2=41352&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_trade/bt/revision [utf8] (original)
+++ erp5/trunk/bt5/erp5_trade/bt/revision [utf8] Fri Dec 10 17:46:57 2010
@@ -1 +1 @@
-1087
\ No newline at end of file
+1088
\ No newline at end of file

Modified: erp5/trunk/products/ERP5/Document/BusinessProcess.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/BusinessProcess.py?rev=41352&r1=41351&r2=41352&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/BusinessProcess.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/BusinessProcess.py [utf8] Fri Dec 10 17:46:57 2010
@@ -187,8 +187,7 @@ class BusinessProcess(Path, XMLObject):
       raise ValueError('explanation must not be a Root Applied Rule')
 
     trade_date = trade_model_path.getTradeDate()
-    if not trade_date:
-      raise ValueError('a trade_date must be defined on every Trade Model Path')
+    assert trade_date, 'a trade_date must be defined on the Trade Model Path'
 
     reference_date_method_id = trade_model_path.getReferenceDateMethodId()
     if not reference_date_method_id:
@@ -797,14 +796,15 @@ class BusinessProcess(Path, XMLObject):
     # global.
     if explanation.getPortalType() == 'Applied Rule':
       if explanation.getParentValue().getPortalType() != "Simulation Tool":
-        # It only makes sens to search for start and start date for
-        # applied rules which are not root applied rules. 
-        # XXX-JPS could be extended with a rule property instead
-        # of supports only in root applied rule case
-        start_date, stop_date = self.getExpectedTradeModelPathStartAndStopDate(
-                               explanation, trade_model_path, delay_mode=delay_mode)
-        property_dict['start_date'] = start_date
-        property_dict['stop_date'] = stop_date
+        # It only makes sense to search for start and stop dates for
+        # applied rules which are not root applied rules.
+        # Date calculation by Business Process can be also disabled by
+        # leaving 'trade_phase' unset (XXX: a separate boolean property,
+        # on the TMP or the rule, may be better).
+        if trade_model_path.getTradeDate():
+          property_dict['start_date'], property_dict['stop_date'] = \
+            self.getExpectedTradeModelPathStartAndStopDate(
+              explanation, trade_model_path, delay_mode=delay_mode)
     else:
       raise TypeError("Explanation must be an Applied Rule in expand process") # Nothing to do
     return property_dict

Modified: erp5/trunk/products/ERP5/tests/testTaskReporting.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testTaskReporting.py?rev=41352&r1=41351&r2=41352&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testTaskReporting.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testTaskReporting.py [utf8] Fri Dec 10 17:46:57 2010
@@ -31,7 +31,6 @@ from Products.ERP5Type.tests.ERP5TypeTes
 from Products.ERP5Type.tests.utils import reindex
 import transaction
 from DateTime import DateTime
-from Products.ERP5.tests.utils import newSimulationExpectedFailure
 
 class TestTaskReporting(ERP5ReportTestCase):
   """Test Task Reporting
@@ -47,23 +46,44 @@ class TestTaskReporting(ERP5ReportTestCa
   @reindex
   def _makeOneTask(self, simulation_state='planned', **kw):
     """Create a task, support many options"""
-    task_module = self.getPortalObject().task_module
-    task = task_module.newContent(portal_type='Task', **kw)
+    task = self.portal.task_module.newContent(portal_type='Task',
+                                              specialise=self.business_process)
+    task._edit(**kw)
     if simulation_state == 'planned':
       task.plan()
     if simulation_state == 'confirmed':
       task.confirm()
 
+  def createBusinessProcess(self):
+    module = self.portal.business_process_module
+    id = self.__class__.__name__
+    try:
+      business_process = module[id]
+    except KeyError:
+      default = module.erp5_default_business_process
+      business_process = module.newContent(id, default.getPortalType(),
+                                           specialise_value=default)
+      delivery_path, = default.getTradeModelPathValueList(
+          trade_phase='default/delivery')
+      # We don't set any trade_date here, so that start and stop dates
+      # are copied from Tasks to Task Reports.
+      business_process.newContent(portal_type=delivery_path.getPortalType(),
+                                  reference=delivery_path.getReference(),
+                                  trade_phase=delivery_path.getTradePhase())
+    return business_process.getRelativeUrl()
+
   def afterSetUp(self):
     """Setup the fixture.
     """
-    self.portal = self.getPortal()
-
-    for rule_id in ['default_order_rule', 'default_delivery_rule']:
-      rule = getattr(self.portal.portal_rules, rule_id)
-      if rule.getValidationState() == 'draft':
+    for rule_id in ('default_order_rule',
+                    'default_delivery_rule',
+                    'default_delivering_rule'):
+      rule = self.getRule(reference=rule_id)
+      if rule.getValidationState() != 'validated':
         rule.validate()
 
+    self.business_process = self.createBusinessProcess()
+
     # create organisations
     if not self.portal.organisation_module.has_key('Organisation_1'):
       org = self.portal.organisation_module.newContent(
@@ -153,19 +173,16 @@ class TestTaskReporting(ERP5ReportTestCa
     """Remove all documents.
     """
     transaction.abort()
-
-    portal = self.getPortal()
+    portal = self.portal
     portal.task_module.manage_delObjects(
                       list(portal.task_module.objectIds()))
     portal.task_report_module.manage_delObjects(
                       list(portal.task_report_module.objectIds()))
     portal.portal_simulation.manage_delObjects(
                       list(portal.portal_simulation.objectIds()))
-
     transaction.commit()
     self.tic()
 
-  @newSimulationExpectedFailure
   def testProjectMontlyReport(self):
     """
     Check monthly report available on project

Modified: erp5/trunk/products/ERP5Legacy/tests/testLegacyProjectAndTask.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Legacy/tests/testLegacyProjectAndTask.py?rev=41352&r1=41351&r2=41352&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Legacy/tests/testLegacyProjectAndTask.py [utf8] (original)
+++ erp5/trunk/products/ERP5Legacy/tests/testLegacyProjectAndTask.py [utf8] Fri Dec 10 17:46:57 2010
@@ -28,12 +28,15 @@
 from Products.ERP5Legacy.tests import Legacy_getBusinessTemplateList
 
 test_suite_list = []
-from Products.ERP5.tests.testProject import *
-test_suite_list.append(test_suite)
 from Products.ERP5.tests.testTask import *
 test_suite_list.append(test_suite)
+from Products.ERP5.tests.testTaskReporting import *
+test_suite_list.append(test_suite)
 from Products.ERP5.tests.testTaskReportDivergence import *
 test_suite_list.append(test_suite)
+# testProject breaks testTaskReporting so we run it after
+from Products.ERP5.tests.testProject import *
+test_suite_list.append(test_suite)
 
 # WARNING: TestProject is tested with rules using 'order' category
 TestProject.rule_id_list = 'default_order_rule', 'default_delivery_rule'
@@ -43,6 +46,9 @@ Legacy_getBusinessTemplateList(TestProje
 TestTaskMixin.business_process = None
 Legacy_getBusinessTemplateList(TestTaskMixin)
 
+TestTaskReporting.createBusinessProcess = lambda self: None
+Legacy_getBusinessTemplateList(TestTaskReporting)
+
 def test_suite():
   suite = test_suite_list[0]()
   for test_suite in test_suite_list[1:]:



More information about the Erp5-report mailing list