[Erp5-report] r31502 kazuhiko - /erp5/trunk/products/ERP5/tests/testERP5Simulation.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Dec 28 17:50:12 CET 2009


Author: kazuhiko
Date: Mon Dec 28 17:50:10 2009
New Revision: 31502

URL: http://svn.erp5.org?rev=31502&view=rev
Log:
override checkOrderRuleSimulation and stepModifySimulationLineQuantityForMergedLine to follow aggegation in expanding to simulation movements.

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

Modified: erp5/trunk/products/ERP5/tests/testERP5Simulation.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testERP5Simulation.py?rev=31502&r1=31501&r2=31502&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testERP5Simulation.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testERP5Simulation.py [utf8] Mon Dec 28 17:50:10 2009
@@ -32,6 +32,8 @@
 import unittest
 import transaction
 
+from zLOG import LOG
+from Products.CMFCore.utils import getToolByName
 from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
 from Products.ERP5Type.tests.Sequence import SequenceList
 from testPackingList import TestPackingList, TestPackingListMixin
@@ -452,6 +454,83 @@
     solver_process.buildTargetSolverList()
     solver_process.solve()
 
+  def checkOrderRuleSimulation(self, rule_reference, sequence=None, sequence_list=None, **kw):
+    """
+      Test if simulation is matching order, be sure that rule_reference is used
+      to expand simulation for order
+    """
+    order = sequence.get('order')
+    related_applied_rule_list = order.getCausalityRelatedValueList( \
+                                   portal_type=self.applied_rule_portal_type)
+    no_applied_rule_state = ('draft', 'auto_planned')
+    order_state = order.getSimulationState()
+
+    if order_state in no_applied_rule_state:
+      self.assertEquals(0, len(related_applied_rule_list))
+    else:
+      LOG('stepCheckOrderRuleSimulation', 0, 'related_applied_rule_list: %s' %
+                   str([x.getObject() for x in related_applied_rule_list]))
+      self.assertEquals(1, len(related_applied_rule_list))
+      applied_rule = related_applied_rule_list[0].getObject()
+      sequence.edit(applied_rule=applied_rule)
+      self.failUnless(applied_rule is not None)
+      self.failUnless(order_state, \
+                      applied_rule.getLastExpandSimulationState())
+
+      # Test if applied rule has a specialise value with passed rule_reference
+      portal_rules = getToolByName(order, 'portal_rules')
+      self.assertEquals(rule_reference,
+                        applied_rule.getSpecialiseReference())
+
+      simulation_movement_list = applied_rule.objectValues()
+      sequence.edit(simulation_movement_list=simulation_movement_list)
+
+      # Count the number of movement in order
+      movement_list = order.getMovementList()
+      # Check if number of unique movement is equal to number of
+      # simulation movement
+      unique_movement_list = dict(
+        [('%r,%r,%r' % (x.getResource(), x.getVariationCategoryList(),
+          x.getVariationPropertyDict())), x] for x in movement_list).values()
+      self.assertEquals(len(unique_movement_list),
+                        len(simulation_movement_list))
+      # Check if all movements are related to simulation movements
+      order_movement_list = sum([x.getOrderValueList() for x in \
+                                 simulation_movement_list], [])
+      self.failIfDifferentSet(movement_list, order_movement_list)
+
+      # Check each simulation movement
+      for simulation_movement in simulation_movement_list:
+        order_movement_list = simulation_movement.getOrderValueList()
+        # Test quantity
+        self.assertEquals(sum([x.getQuantity() for x in order_movement_list]),
+                          simulation_movement.getQuantity())
+        for order_movement in order_movement_list:
+          # Test price
+          self.assertEquals(order_movement.getPrice(), \
+                            simulation_movement.getPrice())
+          # Test resource
+          self.assertEquals(order_movement.getResource(), \
+                            simulation_movement.getResource())
+          # Test resource variation
+          self.assertEquals(order_movement.getVariationText(), \
+                            simulation_movement.getVariationText())
+          self.assertEquals(order_movement.getVariationCategoryList(), \
+                            simulation_movement.getVariationCategoryList())
+          # XXX Test acquisition
+          self.checkAcquisition(simulation_movement, order_movement)
+
+  def stepModifySimulationLineQuantityForMergedLine(self,sequence=None, sequence_list=None, **kw):
+    """
+      Check if simulation movement are disconnected
+    """
+    applied_rule = sequence.get('applied_rule')
+    simulation_line_list = applied_rule.objectValues()
+    self.assertEquals(len(simulation_line_list), 1)
+    for simulation_line in simulation_line_list:
+      simulation_line.edit(quantity=self.default_quantity-2)
+      simulation_line.getOrderValue().edit(quantity=self.default_quantity-2)
+
 def test_suite():
   suite = unittest.TestSuite()
   suite.addTest(unittest.makeSuite(TestERP5Simulation))




More information about the Erp5-report mailing list