From 0fdca6b94d9facbd47fe9690cf27fd300f1f6638 Mon Sep 17 00:00:00 2001
From: Sebastien Robin <seb@nexedi.com>
Date: Tue, 14 Mar 2006 15:09:41 +0000
Subject: [PATCH] added a test in order to check that the update method of the
 delivery builder works

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@6094 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/tests/testPackingList.py | 89 +++++++++++++++++++++++++--
 1 file changed, 83 insertions(+), 6 deletions(-)

diff --git a/product/ERP5/tests/testPackingList.py b/product/ERP5/tests/testPackingList.py
index c061945fa6..157b256d2e 100755
--- a/product/ERP5/tests/testPackingList.py
+++ b/product/ERP5/tests/testPackingList.py
@@ -140,12 +140,21 @@ class TestPackingListMixin(TestOrderMixin):
     """
     return 1
 
-  def stepCheckPackingListIsDivergent(self, sequence=None, sequence_list=None, **kw):
+  def stepCheckPackingListIsDivergent(self, sequence=None, sequence_list=None, 
+                                      packing_list=None,**kw):
     """
       Test if packing list is divergent
     """
-    packing_list = sequence.get('packing_list')
-    self.assertEquals(True,packing_list.isDivergent())
+    if packing_list is None:
+      packing_list = sequence.get('packing_list')
+    self.assertEquals('diverged',packing_list.getCausalityState())
+
+  def stepCheckNewPackingListIsDivergent(self, sequence=None, sequence_list=None, **kw):
+    """
+      Test if packing list is divergent
+    """
+    packing_list = sequence.get('new_packing_list')
+    self.stepCheckPackingListIsDivergent(packing_list=packing_list,sequence=sequence)
 
   def stepCheckPackingListIsCalculating(self, sequence=None, sequence_list=None, **kw):
     """
@@ -180,9 +189,12 @@ class TestPackingListMixin(TestOrderMixin):
       Test if packing list is divergent
     """
     packing_list = sequence.get('packing_list')
+    quantity = sequence.get('line_quantity',default=self.default_quantity)
+    quantity = quantity -1
+    sequence.edit(line_quantity=quantity)
     for packing_list_line in packing_list.objectValues(
                              portal_type=self.packing_list_line_portal_type):
-      packing_list_line.edit(quantity=self.default_quantity-1)
+      packing_list_line.edit(quantity=quantity)
 
   def stepIncreasePackingListLineQuantity(self, sequence=None, sequence_list=None, **kw):
     """
@@ -218,6 +230,7 @@ class TestPackingListMixin(TestOrderMixin):
         packing_list1 = packing_list
       else:
         packing_list2 = packing_list
+    sequence.edit(new_packing_list=packing_list2)
     for line in packing_list1.objectValues(
           portal_type= self.packing_list_line_portal_type):
       self.assertEquals(self.default_quantity-1,line.getQuantity())
@@ -225,6 +238,28 @@ class TestPackingListMixin(TestOrderMixin):
           portal_type= self.packing_list_line_portal_type):
       self.assertEquals(1,line.getQuantity())
 
+  def stepCheckPackingListSplittedTwoTimes(self, sequence=None, sequence_list=None, **kw):
+    """
+      Test if packing list is divergent
+    """
+    order = sequence.get('order')
+    packing_list_list = order.getCausalityRelatedValueList(
+                               portal_type=self.packing_list_portal_type)
+    self.assertEquals(2,len(packing_list_list))
+    packing_list1 = None
+    packing_list2 = None
+    for packing_list in packing_list_list:
+      if packing_list.getUid() == sequence.get('packing_list').getUid():
+        packing_list1 = packing_list
+      else:
+        packing_list2 = packing_list
+    for line in packing_list1.objectValues(
+          portal_type= self.packing_list_line_portal_type):
+      self.assertEquals(self.default_quantity-2,line.getQuantity())
+    for line in packing_list2.objectValues(
+          portal_type= self.packing_list_line_portal_type):
+      self.assertEquals(2,line.getQuantity())
+
   def stepCheckPackingListNotSplitted(self, sequence=None, sequence_list=None, **kw):
     """
       Test if packing list is divergent
@@ -339,15 +374,24 @@ class TestPackingListMixin(TestOrderMixin):
     for simulation_line in simulation_line_list:
       simulation_line.edit(start_date=self.datetime+15)
 
-  def stepAdoptPrevision(self,sequence=None, sequence_list=None, **kw):
+  def stepAdoptPrevision(self,sequence=None, sequence_list=None, 
+                         packing_list=None,**kw):
     """
       Check if simulation movement are disconnected
     """
-    packing_list = sequence.get('packing_list')
+    if packing_list is None:
+      packing_list = sequence.get('packing_list')
     LOG('packing_list.getSimulationState()',0,packing_list.getSimulationState())
     LOG('packing_list.getCausalityState()',0,packing_list.getCausalityState())
     packing_list.portal_workflow.doActionFor(packing_list,'adopt_prevision_action')
 
+  def stepNewPackingListAdoptPrevision(self,sequence=None, sequence_list=None, **kw):
+    """
+      Check if simulation movement are disconnected
+    """
+    packing_list = sequence.get('new_packing_list')
+    self.stepAdoptPrevision(sequence=sequence,packing_list=packing_list)
+
   def stepAcceptDecision(self,sequence=None, sequence_list=None, **kw):
     """
       Check if simulation movement are disconnected
@@ -662,6 +706,39 @@ class TestPackingList(TestPackingListMixin, ERP5TypeTestCase) :
 
     sequence_list.play(self)
 
+  def test_11_PackingListDecreaseTwoTimesQuantityAndUpdateDelivery(self, 
+                                               quiet=0, run=run_all_test):
+    """
+      Change the quantity on an delivery line, then
+      see if the packing list is divergent and then
+      split and defer the packing list
+    """
+    if not run: return
+    sequence_list = SequenceList()
+
+    # Test with a simply order without cell
+    sequence_string = self.default_sequence + '\
+                      DecreasePackingListLineQuantity \
+                      CheckPackingListIsCalculating \
+                      SplitAndDeferPackingList \
+                      Tic \
+                      CheckPackingListIsSolved \
+                      CheckPackingListSplitted \
+                      DecreasePackingListLineQuantity \
+                      CheckPackingListIsCalculating \
+                      SplitAndDeferPackingList \
+                      Tic \
+                      CheckNewPackingListIsDivergent \
+                      NewPackingListAdoptPrevision \
+                      Tic \
+                      CheckPackingListIsSolved \
+                      CheckPackingListSplittedTwoTimes \
+                      '
+    sequence_list.addSequenceString(sequence_string)
+
+    sequence_list.play(self)
+
+
 if __name__ == '__main__':
     framework()
 else:
-- 
2.30.9