From 68b422c26201b57e1cf8f5392c96cdaa170ec5f4 Mon Sep 17 00:00:00 2001
From: Sebastien Robin <seb@nexedi.com>
Date: Tue, 13 Dec 2005 12:09:33 +0000
Subject: [PATCH] make the test with variated inventory working

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@4625 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/tests/testInventoryModule.py | 148 ++++++++++++++++------
 1 file changed, 108 insertions(+), 40 deletions(-)

diff --git a/product/ERP5/tests/testInventoryModule.py b/product/ERP5/tests/testInventoryModule.py
index 937b7bf587..69265c98ba 100755
--- a/product/ERP5/tests/testInventoryModule.py
+++ b/product/ERP5/tests/testInventoryModule.py
@@ -62,10 +62,11 @@ class TestInventoryModule(TestOrderMixin,ERP5TypeTestCase):
   run_all_test = 0
   inventory_portal_type = 'Inventory'
   inventory_line_portal_type = 'Inventory Line'
-  inventory_cell_portal_type = 'Inventory Line'
+  inventory_cell_portal_type = 'Inventory Cell'
   first_date_string = '2005/12/09' # First Inventory
   second_date_string = '2005/12/29' # Next Inventory
   view_stock_date = '2005/12/31' # The day where we are looking for stock
+  size_list = ['Child/32','Child/34'] 
 
   def getInventoryModule(self):
     return getattr(self.getPortal(), 'inventory_module',None)
@@ -73,26 +74,33 @@ class TestInventoryModule(TestOrderMixin,ERP5TypeTestCase):
   def stepCommit(self,**kw):
     get_transaction().commit()
 
-  def createNotVariatedInventory(self, start_date=None,quantity=None,
+  def createInventory(self, start_date=None,
                                        sequence=None,**kw):
     """
     We will put default values for an inventory
     """
     portal = self.getPortal()
-    resource = sequence.get('resource_list')[0]
     organisation =  sequence.get('organisation')
     inventory = self.getInventoryModule().newContent()
     inventory.edit(start_date=start_date,
                    destination_value=organisation)
+    inventory_list = sequence.get('inventory_list',[])
+    inventory_list.append(inventory)
+    sequence.edit(inventory_list=inventory_list)
+    return inventory
+
+  def createNotVariatedInventoryLine(self, quantity=None,
+                                       sequence=None,**kw):
+    """
+    We will put default values for an inventory
+    """
+    portal = self.getPortal()
+    inventory = sequence.get('inventory_list')[-1]
+    resource = sequence.get('resource_list')[-1]
     inventory_line = inventory.newContent(
            portal_type=self.inventory_line_portal_type)
     inventory_line.edit(inventory=quantity,
-                        resource_value = resource,
-                        destination_value=organisation)
-    LOG('create inventory with start_date',0,start_date)
-    LOG('inventory.getStopDate',0,inventory.getStopDate())
-    LOG('inventory_line.getStopDate',0,inventory_line.getStopDate())
-    LOG('inventory_line.showDict()',0,inventory_line.showDict())
+                        resource_value = resource)
     return inventory
 
   def stepCreateFirstNotVariatedInventory(self, sequence=None, sequence_list=None, \
@@ -104,7 +112,8 @@ class TestInventoryModule(TestOrderMixin,ERP5TypeTestCase):
     date = DateTime(self.first_date_string)
     LOG('stepCreateFirstNotVariatedInventory, date',0,date)
     quantity=self.default_quantity
-    self.createNotVariatedInventory(start_date=date,sequence=sequence,
+    self.createInventory(start_date=date,sequence=sequence)
+    self.createNotVariatedInventoryLine(sequence=sequence,
                                     quantity=quantity)
 
   def stepCreateSecondNotVariatedInventory(self, sequence=None, sequence_list=None, \
@@ -115,7 +124,8 @@ class TestInventoryModule(TestOrderMixin,ERP5TypeTestCase):
     portal = self.getPortal()
     date = DateTime(self.second_date_string)
     quantity=self.default_quantity - 2
-    self.createNotVariatedInventory(start_date=date,sequence=sequence,
+    self.createInventory(start_date=date,sequence=sequence)
+    self.createNotVariatedInventoryLine(sequence=sequence,
                                     quantity=quantity)
 
   def stepCheckFirstNotVariatedInventory(self, start_date=None,quantity=None,
@@ -123,9 +133,6 @@ class TestInventoryModule(TestOrderMixin,ERP5TypeTestCase):
     node_uid = sequence.get('organisation').getUid()
     resource_url = sequence.get('resource').getRelativeUrl()
     date = DateTime(self.view_stock_date)
-    LOG('sql src',0,self.getSimulationTool().getInventory(node_uid=node_uid,
-                        resource=resource_url,
-                        to_date=date,src__=1))
     quantity = self.getSimulationTool().getInventory(node_uid=node_uid,
                         resource=resource_url,
                         to_date=date)
@@ -136,6 +143,9 @@ class TestInventoryModule(TestOrderMixin,ERP5TypeTestCase):
     node_uid = sequence.get('organisation').getUid()
     resource_url = sequence.get('resource').getRelativeUrl()
     date = DateTime(self.view_stock_date)
+    LOG('CheckSecondNotVariatedInventory',0, self.getSimulationTool().getInventory(node_uid=node_uid,
+                        resource=resource_url,
+                        to_date=date,src__=1))
     quantity = self.getSimulationTool().getInventory(node_uid=node_uid,
                         resource=resource_url,
                         to_date=date)
@@ -151,12 +161,11 @@ class TestInventoryModule(TestOrderMixin,ERP5TypeTestCase):
     if not run: return
     sequence_list = SequenceList()
 
-    # Test with a simply order without cell
+    # Test with a simple inventory without cell
     sequence_string = 'CreateNotVariatedResource \
                        CreateOrganisation \
                        CreateFirstNotVariatedInventory \
                        Tic \
-                       Commit \
                        CheckFirstNotVariatedInventory \
                        CreateSecondNotVariatedInventory \
                        Tic \
@@ -165,54 +174,67 @@ class TestInventoryModule(TestOrderMixin,ERP5TypeTestCase):
 
     sequence_list.play(self)
 
-  def createVariatedInventory(self, sequence=None, sequence_list=None, \
-                                 **kw):
+  def createVariatedInventoryLine(self, sequence=None, sequence_list=None, \
+                                 start_date=None,quantity=None,**kw):
     """
     We will put default values for an inventory
     """
     portal = self.getPortal()
-    inventory = self.createVariatedInventory(date=date,sequence=sequence)
-    inventory_line = self.objectValues(
-         portal_type=self.inventory_line_portal_type)[0]
-    order_line = sequence.get('order_line')
-    # XXX XXX XXX To be updated
-    resource = sequence.get('resource')
+    inventory = sequence.get('inventory_list')[-1]
+    resource = sequence.get('resource_list')[-1]
+    inventory_line = inventory.newContent(
+           portal_type=self.inventory_line_portal_type)
+    inventory_line.edit(resource_value = resource)
     resource_vcl = list(resource.getVariationCategoryList(
-                                   omit_individual_variation=0))
+                                   omit_individual_variation=1,omit_option_base_category=1))
     resource_vcl.sort()
-    order_line.setVariationCategoryList(resource_vcl)
-    order_line = sequence.get('order_line')
+    self.assertEquals(len(resource_vcl),2)
+    LOG('resource_vcl',0,resource_vcl)
+    inventory_line.setVariationCategoryList(resource_vcl)
     base_id = 'movement'
-    cell_key_list = list(order_line.getCellKeyList(base_id=base_id))
+    cell_key_list = list(inventory_line.getCellKeyList(base_id=base_id))
     cell_key_list.sort()
     price = 100
-    quantity = 200
     for cell_key in cell_key_list:
-      cell = order_line.newCell(base_id=base_id, \
-                                portal_type=self.cell_portal_type, *cell_key)
-      cell.edit(mapped_value_property_list=['price','quantity'],
-                price=price, quantity=quantity,
+      cell = inventory_line.newCell(base_id=base_id, \
+                                portal_type=self.inventory_cell_portal_type, *cell_key)
+      cell.edit(mapped_value_property_list=['price','inventory'],
+                price=price, inventory=quantity,
                 predicate_category_list=cell_key,
                 variation_category_list=cell_key)
       price += 1
       quantity += 1
 
-  def stepCreateVariatedInventory(self, sequence=None, sequence_list=None, \
+  def stepCreateFirstVariatedInventory(self, sequence=None, sequence_list=None, \
                                  **kw):
     """
     We will put default values for an inventory
     """
     portal = self.getPortal()
     date = DateTime(self.first_date_string)
-    inventory = self.createVariatedInventory(date=date,sequence=sequence)
-    inventory_line = 'a'
+    inventory = self.createInventory(start_date=date,sequence=sequence)
+    quantity = self.default_quantity
+    inventory = self.createVariatedInventoryLine(start_date=date,
+                  sequence=sequence, quantity=quantity)
+
+  def stepCreateSecondVariatedInventory(self, sequence=None, sequence_list=None, \
+                                 **kw):
+    """
+    We will put default values for an inventory
+    """
+    portal = self.getPortal()
+    date = DateTime(self.second_date_string)
+    inventory = self.createInventory(start_date=date,sequence=sequence)
+    quantity = self.default_quantity - 10
+    inventory = self.createVariatedInventoryLine(start_date=date,
+                  sequence=sequence, quantity=quantity)
 
   def createVariatedInventory(self, start_date=None,quantity=None,
                                        sequence=None,**kw):
     """
     We will put default values for an inventory
     """
-    inventory = self.createNotVariatedInventory()
+    inventory = self.createNotVariatedInventory(sequence=sequence,start_date=start_date)
     resource = sequence.get('resource_list')[0]
     organisation =  sequence.get('organisation')
     inventory = self.getInventoryModule().newContent()
@@ -224,15 +246,61 @@ class TestInventoryModule(TestOrderMixin,ERP5TypeTestCase):
                         resource_value = resource,
                         destination_value=organisation)
 
-  def test_02_VariatedInventory(self, quiet=0, run=run_all_test):
+  def stepCheckFirstVariatedInventory(self, start_date=None,quantity=None,
+                                             sequence=None,**kw):
+    node_uid = sequence.get('organisation').getUid()
+    resource_url = sequence.get('resource').getRelativeUrl()
+    date = DateTime(self.view_stock_date)
+    total_quantity = 99 + 100
+    quantity = self.getSimulationTool().getInventory(node_uid=node_uid,
+                        resource=resource_url,
+                        to_date=date)
+    self.assertEquals(total_quantity,quantity)
+    variation_text = 'size/Child/32'
+    total_quantity = 99
+    quantity = self.getSimulationTool().getInventory(node_uid=node_uid,
+                        resource=resource_url,
+                        variation_text=variation_text,
+                        to_date=date)
+    self.assertEquals(total_quantity,quantity)
+
+  def stepCheckSecondVariatedInventory(self, start_date=None,quantity=None,
+                                             sequence=None,**kw):
+    node_uid = sequence.get('organisation').getUid()
+    resource_url = sequence.get('resource').getRelativeUrl()
+    date = DateTime(self.view_stock_date)
+    total_quantity = 89 + 90
+    quantity = self.getSimulationTool().getInventory(node_uid=node_uid,
+                        resource=resource_url,
+                        to_date=date)
+    self.assertEquals(total_quantity,quantity)
+    variation_text = 'size/Child/32'
+    total_quantity = 89
+    LOG('CheckSecondVariatedInventory',0, self.getSimulationTool().getInventory(node_uid=node_uid,
+                        resource=resource_url,variation_text=variation_text,
+                        to_date=date,src__=1))
+    quantity = self.getSimulationTool().getInventory(node_uid=node_uid,
+                        resource=resource_url,
+                        variation_text=variation_text,
+                        to_date=date)
+    self.assertEquals(total_quantity,quantity)
+
+  def test_02_VariatedInventory(self, quiet=0, run=1):
     """
     Same thing as test_01 with variation
     """
     if not run: return
     sequence_list = SequenceList()
 
-    # Test with a simply order without cell
-    sequence_string = ''
+    # Test with a variated inventory
+    sequence_string = 'CreateVariatedResource \
+                       CreateOrganisation \
+                       CreateFirstVariatedInventory \
+                       Tic \
+                       CheckFirstVariatedInventory \
+                       CreateSecondVariatedInventory \
+                       Tic \
+                       CheckSecondVariatedInventory'
     sequence_list.addSequenceString(sequence_string)
 
     sequence_list.play(self)
-- 
2.30.9