[Erp5-report] r28524 - /erp5/trunk/products/ERP5/tests/testBPMEvaluation.py

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Aug 20 18:25:34 CEST 2009


Author: luke
Date: Thu Aug 20 18:25:33 2009
New Revision: 28524

URL: http://svn.erp5.org?rev=28524&view=rev
Log:
 - rules are part of configuration and shall be created in test

Modified:
    erp5/trunk/products/ERP5/tests/testBPMEvaluation.py

Modified: erp5/trunk/products/ERP5/tests/testBPMEvaluation.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testBPMEvaluation.py?rev=28524&r1=28523&r2=28524&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testBPMEvaluation.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testBPMEvaluation.py [utf8] Thu Aug 20 18:25:33 2009
@@ -37,6 +37,7 @@
 It is advised to *NOT* remove erp5_administration.
 """
 import unittest
+import transaction
 
 from Products.ERP5.tests.testBPMCore import TestBPMMixin
 from DateTime import DateTime
@@ -63,7 +64,198 @@
     self._createBusinessProcess()
     self._createTradeCondition()
     self._createRootDocument()
-    self.stepTic()
+    self._setUpRules()
+    self.stepTic()
+
+  def _setUpRules(self):
+    """Setups rules
+
+    Rules are part of configuration, so anything provided by Business
+    Templates or previous test runs is ignored - all old rules are invalidated
+    between tests and new rules are created, configured and validated.
+    """
+    self.rule_tool = self.portal.portal_rules
+    for rule in self.rule_tool.contentValues():
+      if rule.getValidationState() == 'validated':
+        rule.invalidate()
+    transaction.commit()
+    self._createBPMOrderRule()
+    self._createBPMDeliveryRule()
+    self._createBPMInvoicingRule()
+    self._createTradeModelRule()
+
+  def _createRootTradeRule(self, **kw):
+    edit_dict = {}
+    edit_dict.update(
+      trade_phase = 'default/delivery',
+      expandable_property = ('aggregate_list', 'base_application_list',
+        'base_contribution_list', 'causality_list', 'description',
+        'destination_account_list', 'destination_function_list',
+        'destination_list', 'destination_section_list', 'price',
+        'price_currency_list', 'quantity', 'quantity_unit_list',
+        'resource_list', 'source_account_list', 'source_function_list',
+        'source_list', 'source_section_list', 'start_date', 'stop_date',
+        'variation_category_list', 'variation_property_dict'),
+      matching_property = ('resource_list', 'variation_category_list',
+        'variation_property_dict')
+    )
+    # TODO: version
+    edit_dict.update(**kw)
+    rule = self.rule_tool.newContent(**edit_dict)
+    rule.newContent(portal_type='Category Divergence Tester',
+        tested_property = ('source_section_list | Source Section',
+          'resource_list | Resource',
+          'destination_section_list | Destination Section',
+          'source_list | Source', 'destination_list | Destination',
+          'aggregate_list | Aggregate'))
+    rule.newContent(portal_type='Property Divergence Tester',
+        tested_property = ('start_date | Start Date',
+          'stop_date | Stop Date'))
+    rule.newContent(portal_type='Quantity Divergence Tester')
+
+    return rule
+
+  def _createBPMOrderRule(self):
+    rule = self._createRootTradeRule(portal_type='BPM Order Rule',
+        reference='default_bpm_order_rule')
+    rule.validate()
+    transaction.commit()
+
+  def _createBPMDeliveryRule(self):
+    rule = self._createRootTradeRule(portal_type='BPM Delivery Rule',
+        reference='default_bpm_delivery_rule'
+        )
+    rule.validate()
+    transaction.commit()
+
+  def _createTradeModelRule(self):
+    # TODO: version
+    edit_dict = {}
+    edit_dict.update(
+    )
+    rule = self.rule_tool.newContent(portal_type='Trade Model Rule',
+      reference='default_trade_model_rule',
+      expandable_property = ('delivery_mode_list', 'incoterm_list',
+        'source_list', 'destination_list', 'source_section_list',
+        'destination_section_list', 'source_decision_list',
+        'destination_decision_list', 'source_administration_list',
+        'destination_administration_list', 'price_currency_list',
+        'resource_list', 'aggregate_list', 'source_function_list',
+        'destination_function_list', 'source_account_list',
+        'destination_account_list', 'description',
+        'destination_payment_list', 'source_payment_list'),
+      test_method_id = ('SimulationMovement_testTradeModelRule',)
+      )
+    rule.newContent(portal_type='Category Divergence Tester',
+        tested_property = ('resource_list | Resource',
+          'source_section_list | Source Section',
+          'destination_section_list | Destination Section',
+          'source_list | Source', 'destination_list | Destination',
+          'source_function_list | Source Function',
+          'destination_function_list | Destination Function',
+          'source_project_list | Source Project',
+          'destination_project_list | Destination Project',
+          'aggregate_list | Aggregate',
+          'price_currency_list | Price Currency',
+          'base_contribution_list | Base Contribution',
+          'base_application_list | Base Application',
+          'source_account_list | Source Account',
+          'destination_account_list | Destination Account'))
+    rule.newContent(portal_type='Property Divergence Tester',
+        tested_property = ('start_date | Start Date',
+          'stop_date | Stop Date', 'price | Price'))
+    rule.newContent(portal_type='Quantity Divergence Tester')
+
+    rule.validate()
+    transaction.commit()
+
+  def _createBPMInvoicingRule(self):
+    # TODO: version
+    edit_dict = {}
+    edit_dict.update(
+    )
+    rule = self.rule_tool.newContent(portal_type='BPM Invoicing Rule',
+      reference='default_bpm_invoicing_rule',
+      trade_phase = 'default/invoicing',
+      expandable_property = ('aggregate_list', 'base_application_list',
+        'base_contribution_list', 'causality_list', 'delivery_mode_list',
+        'description', 'destination_account_list',
+        'destination_function_list', 'destination_list',
+        'destination_section_list', 'efficiency', 'incoterm_list', 'price',
+        'price_currency_list', 'quantity', 'quantity_unit_list',
+        'resource_list', 'source_account_list', 'source_function_list',
+        'source_list', 'source_section_list', 'start_date', 'stop_date',
+        'variation_category_list', 'variation_property_dict'),
+      matching_property = ('resource_list', 'variation_category_list',
+        'variation_property_dict'),
+      test_method_id = ('SimulationMovement_testBPMInvoicingRule',)
+      )
+    rule.newContent(portal_type='Category Divergence Tester',
+        tested_property = ('resource_list | Resource',
+          'source_section_list | Source Section',
+          'destination_section_list | Destination Section',
+          'source_list | Source', 'destination_list | Destination',
+          'source_function_list | Source Function',
+          'destination_function_list | Destination Function',
+          'source_project_list | Source Project',
+          'destination_project_list | Destination Project',
+          'aggregate_list | Aggregate',
+          'price_currency_list | Price Currency',
+          'base_contribution_list | Base Contribution',
+          'base_application_list | Base Application',
+          'source_account_list | Source Account',
+          'destination_account_list | Destination Account'))
+    rule.newContent(portal_type='Property Divergence Tester',
+        tested_property = ('start_date | Start Date',
+          'stop_date | Stop Date'))
+    rule.newContent(portal_type='Quantity Divergence Tester')
+
+    rule.validate()
+    transaction.commit()
+
+  def _createBPMInvoicingRule(self):
+    # TODO: version
+    edit_dict = {}
+    edit_dict.update(
+    )
+    rule = self.rule_tool.newContent(portal_type='BPM Invoicing Rule',
+      reference='default_bpm_invoicing_rule',
+      trade_phase = 'default/invoicing',
+      expandable_property = ('aggregate_list', 'base_application_list',
+        'base_contribution_list', 'causality_list', 'delivery_mode_list',
+        'description', 'destination_account_list',
+        'destination_function_list', 'destination_list',
+        'destination_section_list', 'efficiency', 'incoterm_list', 'price',
+        'price_currency_list', 'quantity', 'quantity_unit_list',
+        'resource_list', 'source_account_list', 'source_function_list',
+        'source_list', 'source_section_list', 'start_date', 'stop_date',
+        'variation_category_list', 'variation_property_dict'),
+      matching_property = ('resource_list', 'variation_category_list',
+        'variation_property_dict'),
+      test_method_id = ('SimulationMovement_testBPMInvoicingRule',)
+      )
+    rule.newContent(portal_type='Category Divergence Tester',
+        tested_property = ('resource_list | Resource',
+          'source_section_list | Source Section',
+          'destination_section_list | Destination Section',
+          'source_list | Source', 'destination_list | Destination',
+          'source_function_list | Source Function',
+          'destination_function_list | Destination Function',
+          'source_project_list | Source Project',
+          'destination_project_list | Destination Project',
+          'aggregate_list | Aggregate',
+          'price_currency_list | Price Currency',
+          'base_contribution_list | Base Contribution',
+          'base_application_list | Base Application',
+          'source_account_list | Source Account',
+          'destination_account_list | Destination Account'))
+    rule.newContent(portal_type='Property Divergence Tester',
+        tested_property = ('start_date | Start Date',
+          'stop_date | Stop Date'))
+    rule.newContent(portal_type='Quantity Divergence Tester')
+
+    rule.validate()
+    transaction.commit()
 
   def _createDocument(self, portal_type, **kw):
     module = self.portal.getDefaultModule(portal_type=portal_type)




More information about the Erp5-report mailing list