[Erp5-report] r22245 - /erp5/trunk/products/ERP5/tests/testProductionOrder.py

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Jul 3 14:40:40 CEST 2008


Author: luke
Date: Thu Jul  3 14:40:37 2008
New Revision: 22245

URL: http://svn.erp5.org?rev=22245&view=rev
Log:
 - added simple test for checking for efficiency related calculations

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

Modified: erp5/trunk/products/ERP5/tests/testProductionOrder.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testProductionOrder.py?rev=22245&r1=22244&r2=22245&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testProductionOrder.py (original)
+++ erp5/trunk/products/ERP5/tests/testProductionOrder.py Thu Jul  3 14:40:37 2008
@@ -186,6 +186,78 @@
 
     self.assertEquals('validated',transformation.getValidationState())
 
+  def stepCreateEmptyTransformation(self, sequence=None, sequence_list=None,
+                               **kw):
+    portal = self.getPortal()
+    transformation_module = portal.getDefaultModule(
+                                     self.transformation_portal_type)
+    transformation = transformation_module.newContent(
+                                   portal_type=self.transformation_portal_type)
+    sequence.edit(transformation=transformation)
+
+
+  def stepFillTransformationWithResource(self, sequence=None, sequence_list=None,
+                               **kw):
+
+    transformation = sequence.get('transformation')
+
+    resource = sequence.get('resource')
+
+    self.assertNotEquals(None, resource)
+
+    transformation.edit(
+      resource_value = resource
+    )
+
+  def stepSetOrderLineQuantity(self, sequence=None, sequence_list=None,
+                               **kw):
+    order_line = sequence.get('order_line')
+    order_line.edit(
+        quantity = self.production_order_line_quantity
+    )
+
+  def stepSetTransformationTransformedResourceQuantity(self, sequence=None, sequence_list=None,
+                               **kw):
+    transformation_transformed_resource = sequence.get('transformation_transformed_resource')
+    transformation_transformed_resource.edit(
+      quantity = self.transformation_transformed_resource_quantity
+    )
+
+  def stepSetTransformationTransformedResourceEfficiency(self, sequence=None, sequence_list=None,
+                               **kw):
+    transformation_transformed_resource = sequence.get('transformation_transformed_resource')
+    transformation_transformed_resource.edit(
+      efficiency = self.transformation_transformed_resource_efficiency
+    )
+
+  def stepSetTransformationTransformedResourceIndustrialPhaseList(self, sequence=None, sequence_list=None,
+                               **kw):
+    transformation_transformed_resource = sequence.get('transformation_transformed_resource')
+    transformation_transformed_resource.edit(
+      industrial_phase_list = self.transformation_transformed_resource_industrial_phase_list
+    )
+
+  def stepFillTransformationTransformedResourceWithComponent1(self, sequence=None, sequence_list=None,
+                               **kw):
+    transformation_transformed_resource = sequence.get('transformation_transformed_resource')
+    component1 = sequence.get('component1')
+
+    self.assertNotEquals(None, component1)
+
+    transformation_transformed_resource.edit(
+      resource_value = component1,
+    )
+
+  def stepCreateTransformationTransformedResource(self, sequence=None, sequence_list=None,
+                               **kw):
+
+    transformation = sequence.get('transformation')
+    transformation_transformed_resource = transformation.newContent(
+      portal_type = self.transformed_resource_portal_type,
+        )
+
+    sequence.edit(transformation_transformed_resource = transformation_transformed_resource)
+
   def stepCreateTransformation(self, sequence=None, sequence_list=None,
                                **kw):
     """
@@ -289,6 +361,45 @@
       quantity=5
     )
     sequence.edit(order_line=order_line)
+
+  def stepCheckEfficiencySimulation(self, sequence=None, sequence_list=None, **kw):
+    """Check that efficiency is applied where is it needed"""
+
+    # XXX: This test is not testing too much, beside for efficiency related quantity
+    #      in just two places.
+    order = sequence.get('order')
+
+    applied_rule = order.getCausalityRelatedValue(portal_type = self.applied_rule_portal_type)
+
+    production_movement_list = applied_rule.contentValues()
+
+    # XXX: hardcode
+    self.assertEquals(
+        1,
+        len(production_movement_list)
+    )
+
+    production_movement = production_movement_list[0]
+
+    transformation_applied_rule = production_movement.contentValues()[0]
+
+    consumed_movement = [q for q in transformation_applied_rule.contentValues() \
+        if q.getId().startswith('cr')][0]
+
+    self.assertEquals(
+        consumed_movement.getQuantity(),
+        self.quantity_after_efficiency_calculation
+    )
+
+    transformation_sourcing_rule = consumed_movement.contentValues()[0]
+
+    consumption_delivery_movement = [q for q in transformation_sourcing_rule.contentValues() \
+        if q.getId().startswith('ts')][0]
+    
+    self.assertEquals(
+        consumption_delivery_movement.getQuantity(),
+        self.quantity_after_efficiency_calculation
+    )
 
   def stepCheckOrderLineTransformationIsSet(self, sequence=None, sequence_list=None, **kw):
     order_line = sequence.get('order_line')
@@ -1192,6 +1303,91 @@
 
     sequence_list.play(self)
     
+  def test_08_testTransformationWithEfficiency(self, quiet=0, run=run_all_test):
+    """
+    Test, that efficiency from transformation applies correctly
+    """
+    if not run: return
+
+    sequence_string = '\
+                      ClearActivities \
+                      CreateProductionOrganisation1 \
+                      CreateSupplyOrganisation1 \
+                      CreateSourcingSC \
+                      Tic \
+                      CreateNotVariatedResource \
+                      CreateComponent1 \
+                      CreateEmptyTransformation \
+                      FillTransformationWithResource \
+                      Tic \
+                      CreateTransformationTransformedResource \
+                      FillTransformationTransformedResourceWithComponent1 \
+                      SetTransformationTransformedResourceQuantity \
+                      SetTransformationTransformedResourceEfficiency \
+                      SetTransformationTransformedResourceIndustrialPhaseList \
+                      Tic \
+                      CreateOrganisation \
+                      CreateOrder \
+                      CreateOrderLine \
+                      SetOrderLineQuantity \
+                      Tic \
+                      OrderOrder \
+                      Tic \
+                      CheckEfficiencySimulation \
+                      '
+    sequence_list = SequenceList()
+    sequence_list.addSequenceString(sequence_string)
+
+    # case - we need Q:10.0, efficiency is 80% (we need more), producing 1.0
+    self.transformation_transformed_resource_quantity = 10.0
+    self.transformation_transformed_resource_efficiency = 0.8 # 80%
+    self.transformation_transformed_resource_industrial_phase_list = ['supply_phase1',]
+
+    self.production_order_line_quantity = 1.0
+    self.quantity_after_efficiency_calculation = 12.5 # (1.0 * 10.0) / 0.8
+
+    sequence_list.play(self)
+
+    # case - we need Q:10.0, efficiency is None (normal, nothing set), producing 1.0
+    self.transformation_transformed_resource_quantity = 10.0
+    self.transformation_transformed_resource_efficiency = None
+    self.transformation_transformed_resource_industrial_phase_list = ['supply_phase1',]
+
+    self.production_order_line_quantity = 1.0
+    self.quantity_after_efficiency_calculation = 10.0 # (1.0 * 10.0) / 1.0
+
+    sequence_list.play(self)
+
+    # case - we need Q:10.0, efficiency is 100% (normal), producing 1.0
+    self.transformation_transformed_resource_quantity = 10.0
+    self.transformation_transformed_resource_efficiency = 1.0
+    self.transformation_transformed_resource_industrial_phase_list = ['supply_phase1',]
+
+    self.production_order_line_quantity = 1.0
+    self.quantity_after_efficiency_calculation = 10.0 # (1.0 * 10.0) / 1.0
+
+    sequence_list.play(self)
+
+    # case - we need Q:10.0, efficiency is 125% (miracle?), producing 1.0
+    self.transformation_transformed_resource_quantity = 10.0
+    self.transformation_transformed_resource_efficiency = 1.25
+    self.transformation_transformed_resource_industrial_phase_list = ['supply_phase1',]
+
+    self.production_order_line_quantity = 1.0
+    self.quantity_after_efficiency_calculation = 8.0 # (1.0 * 10.0) / 1.25
+
+    sequence_list.play(self)
+
+    # case - we need Q:10.0, efficiency is -80% (nonsense?), producing 1.0
+    self.transformation_transformed_resource_quantity = 10.0
+    self.transformation_transformed_resource_efficiency = -0.8
+    self.transformation_transformed_resource_industrial_phase_list = ['supply_phase1',]
+
+    self.production_order_line_quantity = 1.0
+    self.quantity_after_efficiency_calculation = -12.5 # (1.0 * 10.0) / -0.8
+
+    sequence_list.play(self)
+
   def test_50_testCopyPaste(self, quiet=0, run=run_all_test):
     """
     Check that relation are changed when doing a copy/paste,




More information about the Erp5-report mailing list