[Erp5-report] r11623 - /erp5/trunk/products/ERP5/tests/testInventory.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Dec 6 18:14:03 CET 2006


Author: seb
Date: Wed Dec  6 18:14:02 2006
New Revision: 11623

URL: http://svn.erp5.org?rev=11623&view=rev
Log:
add test to make sure inventories are also working with variation

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

Modified: erp5/trunk/products/ERP5/tests/testInventory.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testInventory.py?rev=11623&r1=11622&r2=11623&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testInventory.py (original)
+++ erp5/trunk/products/ERP5/tests/testInventory.py Wed Dec  6 18:14:02 2006
@@ -40,6 +40,8 @@
 
 
 from random import randint
+from Products.ERP5Type.Utils import cartesianProduct
+from copy import copy
 
 import os, sys
 if __name__ == '__main__':
@@ -170,21 +172,28 @@
     inventory.deliver()
     inventory_list.append(inventory)
     sequence.edit(inventory_list = inventory_list)
-                        
-  def stepCreateSingleInventory(self, sequence=None, sequence_list=None, **kw):
-    """
-      Create a single Inventory object for Inventory Module testing
+
+  def createInventory(self, sequence=None):
+    """
     """
     portal = self.getPortal()
-    inventory_list = sequence.get('inventory_list')
-    if inventory_list is None:
-      inventory_list = []
+    inventory_list = sequence.get('inventory_list',[])
     inventory_module = portal.getDefaultModule(portal_type = self.inventory_portal_type)
     inventory = inventory_module.newContent(portal_type = self.inventory_portal_type)
     inventory.edit(destination_value = sequence.get('node'),
                    destination_section_value = sequence.get('section'),
                    start_date = DateTime() + 1
                   )
+    inventory_list.append(inventory)
+    sequence.edit(inventory_list=inventory_list)
+    return inventory
+                        
+  def stepCreateSingleInventory(self, sequence=None, sequence_list=None, **kw):
+    """
+      Create a single Inventory object for Inventory Module testing
+    """
+    inventory = self.createInventory(sequence=sequence)
+    inventory_list = sequence.get('inventory_list',[])
     inventory_line = inventory.newContent(portal_type = self.inventory_line_portal_type)
     inventory_line.edit(resource_value = sequence.get('resource'),
                         inventory = 24.
@@ -192,6 +201,41 @@
     inventory.deliver()
     inventory_list.append(inventory)
     sequence.edit(inventory_list=inventory_list)
+                        
+  def stepCreateSingleVariatedInventory(self, sequence=None, sequence_list=None, **kw):
+    """
+      Create a single Inventory object for Inventory Module testing
+    """
+    inventory = self.createInventory(sequence=sequence)
+    inventory_line = inventory.newContent(portal_type = self.inventory_line_portal_type)
+    category_list = sequence.get('variation_1')
+    inventory_line.edit(resource_value = sequence.get('resource'),
+                        variation_category_list=category_list
+                       )
+    inventory_line.updateCellRange(base_id='movement')
+    cell = inventory_line.newCell(base_id='movement',*category_list)
+    quantity=5
+    cell.edit(
+        quantity = quantity,
+        predicate_category_list = category_list,
+        variation_category_list = category_list,
+        mapped_value_property_list = ['quantity'],
+        )
+    category_list = sequence.get('variation_2')
+    inventory_line = inventory.newContent(portal_type = self.inventory_line_portal_type)
+    inventory_line.edit(resource_value = sequence.get('resource'),
+                        variation_category_list=category_list
+                       )
+    inventory_line.updateCellRange(base_id='movement')
+    cell = inventory_line.newCell(base_id='movement',*category_list)
+    quantity=0
+    cell.edit(
+        quantity = quantity,
+        predicate_category_list = category_list,
+        variation_category_list = category_list,
+        mapped_value_property_list = ['quantity'],
+        )
+    inventory.deliver()
                         
   def stepCreatePackingListForModule(self, sequence=None,
                                       sequence_list=None, **kw):
@@ -219,25 +263,77 @@
     self.assertNotEquals( packing_list.getSourceValue(), None)
     self.assertNotEquals( packing_list.getSourceSectionValue(),
                           packing_list.getDestinationSectionValue() )
-
+    sequence.edit(packing_list=packing_list)
+
+  def stepCreatePackingListLine(self, sequence=None,
+                                      sequence_list=None, **kw):
+    """
+    Create a line not variated
+    """
+    packing_list = sequence.get('packing_list')
+    resource = sequence.get('resource')
     packing_list_line = packing_list.newContent(
                   portal_type=self.packing_list_line_portal_type)
     packing_list_line.edit(resource_value = resource,
                            quantity = 100.
                           )
+
+  def stepCreateVariatedPackingListLine(self, sequence=None,
+                                      sequence_list=None, **kw):
+    """
+    Create a line not variated
+    """
+    packing_list = sequence.get('packing_list')
+    delivery_line_list = sequence.get('delivery_line_list',[])
+    # Create Packing List Line
+    packing_list_line = packing_list.newContent(portal_type=self.packing_list_line_portal_type)
+    delivery_line_list.append(packing_list_line)
+    resource = sequence.get('resource')
+    variation_category_list = ['size/Child/32',
+                               'size/Child/34',
+                               'colour/%s/1' % resource.getRelativeUrl(),
+                               'morphology/%s/4' % resource.getRelativeUrl()]
+    packing_list_line.edit(
+        resource_value = resource,
+        variation_category_list=variation_category_list)
+    # Set cell range
+    packing_list_line.updateCellRange(base_id='movement')
+
+    cell_range = packing_list_line.getCellRange(base_id='movement')
+    cartesian_product = cartesianProduct(cell_range)
+    for cell_key in cartesian_product:
+      cell = packing_list_line.newCell(base_id='movement', *cell_key)
+      if 'size/Child/32' in cell_key:
+        quantity = 1
+        sequence.edit(variation_1=cell_key)
+      elif 'size/Child/34' in cell_key:
+        sequence.edit(variation_2=cell_key)
+        quantity = 3
+      cell.edit(
+          quantity = quantity,
+          predicate_category_list = cell_key,
+          variation_category_list = cell_key,
+          mapped_value_property_list = ['quantity'],
+          )
+    sequence.edit(delivery_line_list=delivery_line_list)
+
+  def stepDeliverPackingList(self, sequence=None,
+                                      sequence_list=None, **kw):
     # Switch to "started" state
-    sequence.edit(packing_list = packing_list)
+    packing_list = sequence.get('packing_list')
     workflow_tool = self.getPortal().portal_workflow
-    workflow_tool.doActionFor(sequence.get('packing_list'),
+    workflow_tool.doActionFor(packing_list,
                       "confirm_action", "packing_list_workflow")
+    get_transaction().commit()
     # Apply tic so that the packing list is not in building state
     self.tic() # acceptable here because this is not the job
                # of the test to check if can do all transition
                # without processing messages
-    packing_list = sequence.get('packing_list')
-    workflow_tool.doActionFor(sequence.get('packing_list'),
+    workflow_tool.doActionFor(packing_list,
                       "set_ready_action", "packing_list_workflow")
-    workflow_tool.doActionFor(sequence.get('packing_list'),
+    get_transaction().commit()
+    self.tic()
+    workflow_tool.doActionFor(packing_list,
                       "start_action", "packing_list_workflow")
                         
   def stepCreateOrganisationList(self, sequence=None, sequence_list=None, **kw):
@@ -1608,7 +1704,52 @@
                     node=organisation_list[node].getRelativeUrl(),
                     variation_category=variation_categories, src__=1))
     self.assertEquals(next_date, expected_negative_date)
+
+
+  def checkVariatedInventory(self, sequence=None, sequence_list=None, 
+                             variation_category_list=None,
+                             quantity=None,**kw):
+    """
+    """
+    simulation = self.getPortal().portal_simulation
+    variation_category_list = copy(variation_category_list)
+    variation_category_list.sort()
+    variation_text = '\n'.join(variation_category_list)
+    inventory = simulation.getCurrentInventory(
+                    section=sequence.get('section').getRelativeUrl(),
+                    node=sequence.get('node').getRelativeUrl(),
+                    variation_text=variation_text
+                )
+    self.assertEquals(inventory, quantity)
       
+  def stepTestInitialVariatedInventory(self, sequence=None, sequence_list=None, **kw):
+    """
+      Test Inventory Module behavior
+    """
+    resource = sequence.get('resource')
+    variation_category_list = sequence.get('variation_1')
+    quantity = 1
+    self.checkVariatedInventory(variation_category_list=variation_category_list,
+                                quantity=quantity,sequence=sequence)
+    variation_category_list = sequence.get('variation_2')
+    quantity = 3
+    self.checkVariatedInventory(variation_category_list=variation_category_list,
+                                quantity=quantity,sequence=sequence)
+
+  def stepTestVariatedInventoryAfterInventory(self, sequence=None, sequence_list=None, **kw):
+    """
+      Test Inventory Module behavior
+    """
+    resource = sequence.get('resource')
+    variation_category_list = sequence.get('variation_1')
+    quantity = 5
+    self.checkVariatedInventory(variation_category_list=variation_category_list,
+                                quantity=quantity,sequence=sequence)
+    variation_category_list = sequence.get('variation_2')
+    quantity = 0
+    self.checkVariatedInventory(variation_category_list=variation_category_list,
+                                quantity=quantity,sequence=sequence)
+
   def stepTestInventoryModule(self, sequence=None, sequence_list=None, **kw):
     """
       Test Inventory Module behavior
@@ -1699,6 +1840,10 @@
                        stepCreateItemList \
                        stepCreatePackingListForModule \
                        stepTic \
+                       stepCreatePackingListLine \
+                       stepTic \
+                       stepDeliverPackingList \
+                       stepTic \
                        stepCreateAggregatingInventory \
                        stepTic \
                        stepTestInventoryModule \
@@ -1713,6 +1858,31 @@
 
     sequence_list.play(self)
 
+  def test_02_InventoryModuleWithVariation(self, quiet=0, run=run_all_test):
+    """
+      Test the InventoryModule behavior
+    """
+    if not run: return
+    sequence_list = SequenceList()
+
+    sequence_string = 'stepCreateOrganisationsForModule \
+                       stepCreateVariatedResource \
+                       stepTic \
+                       stepCreatePackingListForModule \
+                       stepTic \
+                       stepCreateVariatedPackingListLine \
+                       stepTic \
+                       stepDeliverPackingList \
+                       stepTic \
+                       stepTestInitialVariatedInventory \
+                       stepCreateSingleVariatedInventory \
+                       stepTic \
+                       stepTestVariatedInventoryAfterInventory \
+                       '
+    sequence_list.addSequenceString(sequence_string)
+
+    sequence_list.play(self)
+
 if __name__ == '__main__':
     framework()
 else:




More information about the Erp5-report mailing list