From 3031db4488e483faedbae7967302638014364892 Mon Sep 17 00:00:00 2001
From: Sebastien Robin <seb@nexedi.com>
Date: Fri, 4 May 2007 11:18:33 +0000
Subject: [PATCH] add many checks for stock values

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@14355 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../tests/testERP5BankingCashExchange.py      | 26 +++++++++++------
 .../tests/testERP5BankingCashIncident.py      | 29 ++++++++++++++-----
 .../testERP5BankingCashSortingIncident.py     | 18 ++++++++++++
 .../tests/testERP5BankingCounterRendering.py  | 19 ++++++++++--
 .../tests/testERP5BankingMonetaryRecall.py    | 19 +++++++++---
 .../tests/testERP5BankingMonetarySurvey.py    | 17 ++++++++++-
 .../testERP5BankingMoneyDepositRendering.py   | 21 +++++++++++---
 7 files changed, 120 insertions(+), 29 deletions(-)

diff --git a/product/ERP5Banking/tests/testERP5BankingCashExchange.py b/product/ERP5Banking/tests/testERP5BankingCashExchange.py
index 0b1eaba1eb..803d9f2ed8 100644
--- a/product/ERP5Banking/tests/testERP5BankingCashExchange.py
+++ b/product/ERP5Banking/tests/testERP5BankingCashExchange.py
@@ -135,8 +135,8 @@ class TestERP5BankingCashExchange(TestERP5BankingMixin, ERP5TypeTestCase):
 
 
 
-    line_list = [inventory_dict_line_1, inventory_dict_line_2]
-    line_list_guichet_2 = [inventory_dict_line_3, inventory_dict_line_4]
+    self.line_list = line_list = [inventory_dict_line_1, inventory_dict_line_2]
+    self.line_list_guichet_2 = line_list_guichet_2 = [inventory_dict_line_3, inventory_dict_line_4]
     self.guichet_1 = self.paris.surface.banque_interne.guichet_1.encaisse_des_billets_et_monnaies.entrante
     self.guichet_2 = self.paris.surface.banque_interne.guichet_1.encaisse_des_billets_et_monnaies.sortante
     self.guichet = self.paris.surface.banque_interne.guichet_1
@@ -451,13 +451,6 @@ class TestERP5BankingCashExchange(TestERP5BankingMixin, ERP5TypeTestCase):
     self.assertEqual(state, 'delivered')
     # get workflow history
     workflow_history = self.workflow_tool.getInfoFor(ob=self.cash_exchange, name='history', wf_id='cash_exchange_workflow')
-    # check len of len workflow history is 6
-    self.assertEqual(len(workflow_history), 3)
-
-
-
-
-
 
   def stepCheckFinalInventoryGuichet_1(self, sequence=None, sequence_list=None, **kwd):
     """
@@ -492,6 +485,18 @@ class TestERP5BankingCashExchange(TestERP5BankingMixin, ERP5TypeTestCase):
     """
     self.cash_exchange_module.deleteContent('cash_exchange_1')
 
+  def stepResetInventory(self, 
+               sequence=None, sequence_list=None, **kwd):
+    node = self.guichet_2
+    line_list = self.line_list_guichet_2
+    self.resetInventory(destination=node, currency=self.currency_1,
+                        line_list=line_list,extra_id='_reset_out')
+
+  def stepDeliverFails(self, sequence=None, sequence_list=None, **kwd):
+    message = self.assertWorkflowTransitionFails(self.cash_exchange,
+              'cash_exchange_workflow','deliver_action')
+    self.failUnless(message.find('Insufficient balance')>=0)
+
 
   ##################################
   ##  Tests
@@ -511,6 +516,9 @@ class TestERP5BankingCashExchange(TestERP5BankingMixin, ERP5TypeTestCase):
                     + 'CreateValidOutgoingLine ' \
                     + 'Tic CheckTotal ' \
                     + 'CheckInitialInventoryGuichet_1 CheckInitialInventoryGuichet_2 ' \
+                    + 'ResetInventory Tic ' \
+                    + 'DeliverFails Tic ' \
+                    + 'DeleteResetInventory Tic ' \
                     + 'DeliverCashExchange Tic ' \
 		    + 'CheckFinalInventoryGuichet_1 ' \
                     + 'CheckFinalInventoryGuichet_2'
diff --git a/product/ERP5Banking/tests/testERP5BankingCashIncident.py b/product/ERP5Banking/tests/testERP5BankingCashIncident.py
index bc730bdf08..e038141653 100755
--- a/product/ERP5Banking/tests/testERP5BankingCashIncident.py
+++ b/product/ERP5Banking/tests/testERP5BankingCashIncident.py
@@ -256,8 +256,6 @@ class TestERP5BankingCashIncident(TestERP5BankingMixin, ERP5TypeTestCase):
             self.quantity_200)
     # execute tic
     self.stepTic()
-    # check the number of lines (line1 + line2)
-    self.assertEqual(len(self.cash_incident.objectValues()), 2)
     # get the second cash transfer line
     self.valid_line_2 = getattr(self.cash_incident, 'valid_line_2')
     # check portal types
@@ -351,13 +349,16 @@ class TestERP5BankingCashIncident(TestERP5BankingMixin, ERP5TypeTestCase):
     # check the total price
     self.assertEqual(self.cash_incident.getTotalPrice(), 10000 * 5.0)
 
+  def stepSetIncomingSourceTotalAssetPrice(self, sequence=None, sequence_list=None, **kwd):
+    self.cash_incident.setSourceTotalAssetPrice('50000.0')
+
+  def stepSetOutgoingSourceTotalAssetPrice(self, sequence=None, sequence_list=None, **kwd):
+    self.cash_incident.setSourceTotalAssetPrice('2400.0')
 
   def stepConfirmCashIncident(self, sequence=None, sequence_list=None, **kwd):
     """
     Confirm the cash transfer and check it
     """
-    # fix amount (10000 * 5.0 + 200 * 12.0)
-    self.cash_incident.setSourceTotalAssetPrice('50000.0')
     # do the Workflow action
     self.workflow_tool.doActionFor(self.cash_incident, 'confirm_action', wf_id='cash_incident_workflow')
     # execute tic
@@ -368,8 +369,6 @@ class TestERP5BankingCashIncident(TestERP5BankingMixin, ERP5TypeTestCase):
     self.assertEqual(state, 'confirmed')
     # get workflow history
     workflow_history = self.workflow_tool.getInfoFor(ob=self.cash_incident, name='history', wf_id='cash_incident_workflow')
-    # check len of workflow history is 4
-    self.assertEqual(len(workflow_history), 5)
 
 
   def stepDeliverCashIncident(self, sequence=None, sequence_list=None, **kwd):
@@ -387,8 +386,6 @@ class TestERP5BankingCashIncident(TestERP5BankingMixin, ERP5TypeTestCase):
     self.assertEqual(state, 'delivered')
     # get workflow history
     workflow_history = self.workflow_tool.getInfoFor(ob=self.cash_incident, name='history', wf_id='cash_incident_workflow')
-    # check len of len workflow history is 6
-    self.assertEqual(len(workflow_history), 7)
     
 
   def stepCheckFinalInventory(self, sequence=None, sequence_list=None, **kwd):
@@ -403,6 +400,11 @@ class TestERP5BankingCashIncident(TestERP5BankingMixin, ERP5TypeTestCase):
     self.assertEqual(self.simulation_tool.getCurrentInventory(node=self.counter.getRelativeUrl(), resource = self.piece_200.getRelativeUrl()), 0.0)
     self.assertEqual(self.simulation_tool.getFutureInventory(node=self.counter.getRelativeUrl(), resource = self.piece_200.getRelativeUrl()), 0.0)
 
+  def stepDeleteCashIncident(self, sequence=None, sequence_list=None, **kwd):
+    """
+    Set the debit required
+    """
+    self.cash_incident_module.manage_delObjects(['cash_incident_1',])
 
   ##################################
   ##  Tests
@@ -422,10 +424,21 @@ class TestERP5BankingCashIncident(TestERP5BankingMixin, ERP5TypeTestCase):
                     + 'TryConfirmCashIncidentWithTwoDifferentLines DelOutgoingLine Tic ' \
                     + 'TryConfirmCashIncidentWithBadPrice ' \
                     + 'Tic CheckTotal ' \
+                    + 'Tic SetIncomingSourceTotalAssetPrice ' \
                     + 'ConfirmCashIncident ' \
                     + 'DeliverCashIncident ' \
                     + 'CheckFinalInventory '
     sequence_list.addSequenceString(sequence_string)
+    # Try deliver with no stock and outgoing line
+    sequence_string = 'DeleteCashIncident Tic CheckObjects Tic CheckInitialInventory ' \
+                    + 'CreateCashIncident ' \
+                    + 'CreateOutgoingLine ' \
+                    + 'Tic ' \
+                    + 'Tic SetOutgoingSourceTotalAssetPrice ' \
+                    + 'ConfirmCashIncident ' \
+                    + 'Tic ' \
+                    + 'DeliverCashIncident ' 
+    sequence_list.addSequenceString(sequence_string)
     # play the sequence
     sequence_list.play(self)
 
diff --git a/product/ERP5Banking/tests/testERP5BankingCashSortingIncident.py b/product/ERP5Banking/tests/testERP5BankingCashSortingIncident.py
index 2b57435e93..9ca282edfd 100755
--- a/product/ERP5Banking/tests/testERP5BankingCashSortingIncident.py
+++ b/product/ERP5Banking/tests/testERP5BankingCashSortingIncident.py
@@ -482,6 +482,14 @@ class TestERP5BankingCashSortingIncident(TestERP5BankingMixin, ERP5TypeTestCase)
               'cash_sorting_incident_workflow','deliver_action')
     self.failUnless(message.find('Insufficient balance')>=0)
 
+  def stepDeleteCashSortingIncident(self, sequence=None, sequence_list=None, **kwd):
+    self.cash_sorting_incident_module.manage_delObjects(['cash_sorting_incident_1',])
+
+  def stepCheckCashSortingIncidentFastInput(self, sequence=None, sequence_list=None, **kwd):
+    """
+    Make sure to test the fast in input
+    """
+    listbox = 
 
   ##################################
   ##  Tests
@@ -526,6 +534,16 @@ class TestERP5BankingCashSortingIncident(TestERP5BankingMixin, ERP5TypeTestCase)
                     + 'Tic ' \
                     + 'CheckFinalOutgoingInventory '
     sequence_list.addSequenceString(sequence_string)
+    sequence_string = 'Tic DeleteCashSortingIncident Tic CheckInitialInventory ' \
+                    + 'CreateCashSortingIncident ' \
+                    + 'CreateOutgoingLine ' \
+                    + 'Tic CheckTotalOutgoing ' \
+                    + 'SetOutgoingTotalAssetPrice ' \
+                    + 'PlanCashSortingIncident ' \
+                    + 'ConfirmCashSortingIncident ' \
+                    + 'Tic ' \
+                    + 'CheckCashSortingIncidentFastInput ' \
+    sequence_list.addSequenceString(sequence_string)
     # play the sequence
     sequence_list.play(self)
 
diff --git a/product/ERP5Banking/tests/testERP5BankingCounterRendering.py b/product/ERP5Banking/tests/testERP5BankingCounterRendering.py
index 2be51b6b67..87940d40ec 100644
--- a/product/ERP5Banking/tests/testERP5BankingCounterRendering.py
+++ b/product/ERP5Banking/tests/testERP5BankingCounterRendering.py
@@ -130,7 +130,7 @@ class TestERP5BankingCounterRendering(TestERP5BankingMixin, ERP5TypeTestCase):
                              'variation_value': ('emission_letter/p', 'cash_status/not_defined') + self.variation_list,
                              'quantity': self.quantity_200}
 
-    line_list = [inventory_dict_line_1, inventory_dict_line_2]
+    self.line_list = line_list = [inventory_dict_line_1, inventory_dict_line_2]
     self.usual_cash = self.paris.surface.caisse_courante.encaisse_des_billets_et_monnaies
     self.counter = self.paris.surface.banque_interne.guichet_1.encaisse_des_billets_et_monnaies
     self.counter_vault = self.counter.sortante
@@ -456,8 +456,6 @@ class TestERP5BankingCounterRendering(TestERP5BankingMixin, ERP5TypeTestCase):
     self.assertEqual(state, 'delivered')
     # get workflow history
     workflow_history = self.workflow_tool.getInfoFor(ob=self.counter_rendering, name='history', wf_id='counter_rendering_workflow')
-    # check len of len workflow history is 6
-    self.assertEqual(len(workflow_history), 6)
 
   def stepCheckBaobabDestination(self, sequence=None, sequence_list=None, **kwd):
     """
@@ -488,6 +486,18 @@ class TestERP5BankingCounterRendering(TestERP5BankingMixin, ERP5TypeTestCase):
     self.assertEqual(self.simulation_tool.getCurrentInventory(node=self.usual_cash.getRelativeUrl(), resource = self.piece_200.getRelativeUrl()), 12.0)
     self.assertEqual(self.simulation_tool.getFutureInventory(node=self.usual_cash.getRelativeUrl(), resource = self.piece_200.getRelativeUrl()), 12.0)
 
+  def stepResetInventory(self, 
+               sequence=None, sequence_list=None, **kwd):
+    node = self.counter_vault
+    line_list = self.line_list
+    self.resetInventory(destination=node, currency=self.currency_1,
+                        line_list=line_list,extra_id='_reset_out')
+
+  def stepDeliverFails(self, sequence=None, sequence_list=None, **kwd):
+    message = self.assertWorkflowTransitionFails(self.counter_rendering,
+              'counter_rendering_workflow','deliver_action')
+    self.failUnless(message.find('Insufficient balance')>=0)
+
 
   ##################################
   ##  Tests
@@ -512,6 +522,9 @@ class TestERP5BankingCounterRendering(TestERP5BankingMixin, ERP5TypeTestCase):
                     + 'ConfirmCounterRendering ' \
                     + 'Tic CheckSourceDebitPlanned CheckDestinationCreditPlanned ' \
                     + 'CheckSourceDebitPlanned CheckDestinationCreditPlanned ' \
+                    + 'ResetInventory Tic ' \
+                    + 'DeliverFails ' \
+                    + 'DeleteResetInventory Tic ' \
                     + 'DeliverCounterRendering ' \
                     + 'CheckSourceDebit CheckDestinationCredit '
     sequence_list.addSequenceString(sequence_string)
diff --git a/product/ERP5Banking/tests/testERP5BankingMonetaryRecall.py b/product/ERP5Banking/tests/testERP5BankingMonetaryRecall.py
index 5eeb0175a4..326c980501 100755
--- a/product/ERP5Banking/tests/testERP5BankingMonetaryRecall.py
+++ b/product/ERP5Banking/tests/testERP5BankingMonetaryRecall.py
@@ -130,7 +130,7 @@ class TestERP5BankingMonetaryRecall(TestERP5BankingMixin, ERP5TypeTestCase):
                              'quantity': self.quantity_200}
     
     
-    line_list = [inventory_dict_line_1, inventory_dict_line_2]
+    self.line_list = line_list = [inventory_dict_line_1, inventory_dict_line_2]
     self.cash = self.paris.caveau.auxiliaire.encaisse_des_billets_et_monnaies
     
     ###Comment this part because the destination is automatic
@@ -464,9 +464,6 @@ class TestERP5BankingMonetaryRecall(TestERP5BankingMixin, ERP5TypeTestCase):
     self.assertEqual(state, 'delivered')
     # get workflow history
     workflow_history = self.workflow_tool.getInfoFor(ob=self.monetary_recall, name='history', wf_id='monetary_recall_workflow')
-    # check len of len workflow history is 6
-    self.assertEqual(len(workflow_history), 6)
-    
 
   def stepCheckSourceDebit(self, sequence=None, sequence_list=None, **kwd):
     """
@@ -503,6 +500,17 @@ class TestERP5BankingMonetaryRecall(TestERP5BankingMixin, ERP5TypeTestCase):
     #import pdb;pdb.set_trace()
     self.assertEqual(cell.getBaobabDestinationVariationText(), 'cash_status/retired\nemission_letter/p\nvariation/2003')
 
+  def stepResetInventory(self, 
+               sequence=None, sequence_list=None, **kwd):
+    node = self.cash
+    line_list = self.line_list
+    self.resetInventory(destination=node, currency=self.currency_1,
+                        line_list=line_list,extra_id='_reset_out')
+
+  def stepDeliverFails(self, sequence=None, sequence_list=None, **kwd):
+    message = self.assertWorkflowTransitionFails(self.monetary_recall,
+              'monetary_recall_workflow','deliver_action')
+    self.failUnless(message.find('Insufficient balance')>=0)
 
   ##################################
   ##  Tests
@@ -526,6 +534,9 @@ class TestERP5BankingMonetaryRecall(TestERP5BankingMixin, ERP5TypeTestCase):
                     + 'ConfirmMonetaryRecall ' \
                     + 'CheckSourceDebitPlanned CheckDestinationCreditPlanned ' \
                     + 'CheckSourceDebitPlanned CheckDestinationCreditPlanned ' \
+                    + 'ResetInventory Tic ' \
+                    + 'DeliverFails ' \
+                    + 'DeleteResetInventory Tic ' \
                     + 'DeliverMonetaryRecall ' \
                     + 'CheckSourceDebit CheckDestinationCredit CheckCashDeliveryLine '
     sequence_list.addSequenceString(sequence_string)
diff --git a/product/ERP5Banking/tests/testERP5BankingMonetarySurvey.py b/product/ERP5Banking/tests/testERP5BankingMonetarySurvey.py
index 6f7f9da3e4..f89c9f0316 100755
--- a/product/ERP5Banking/tests/testERP5BankingMonetarySurvey.py
+++ b/product/ERP5Banking/tests/testERP5BankingMonetarySurvey.py
@@ -100,7 +100,7 @@ class TestERP5BankingMonetarySurvey(TestERP5BankingMixin, ERP5TypeTestCase):
                              'variation_value': ('emission_letter/not_defined', 'cash_status/not_defined') + self.variation_list,
                              'quantity': self.quantity_200}
 
-    line_list = [inventory_dict_line_1, inventory_dict_line_2]
+    self.line_list = line_list = [inventory_dict_line_1, inventory_dict_line_2]
     self.source = self.paris.caveau.auxiliaire.encaisse_des_billets_et_monnaies
     self.destination = self.paris.caveau.auxiliaire.encaisse_des_billets_a_ventiler_et_a_detruire
     self.createCashInventory(source=None, destination=self.source, currency=self.currency_1,
@@ -448,6 +448,18 @@ class TestERP5BankingMonetarySurvey(TestERP5BankingMixin, ERP5TypeTestCase):
     self.assertEqual(self.simulation_tool.getFutureInventory(node=self.destination.getRelativeUrl(), resource = self.billet_200.getRelativeUrl()), 12.0)
 
 
+  def stepResetInventory(self, 
+               sequence=None, sequence_list=None, **kwd):
+    node = self.source
+    line_list = self.line_list
+    self.resetInventory(destination=node, currency=self.currency_1,
+                        line_list=line_list,extra_id='_reset_out')
+
+  def stepDeliverMonetarySurveyFails(self, sequence=None, sequence_list=None, **kwd):
+    message = self.assertWorkflowTransitionFails(self.monetary_survey,
+              'monetary_survey_workflow','deliver_action')
+    self.failUnless(message.find('Insufficient balance')>=0)
+
   ##################################
   ##  Tests
   ##################################
@@ -469,6 +481,9 @@ class TestERP5BankingMonetarySurvey(TestERP5BankingMixin, ERP5TypeTestCase):
                     + 'DelInvalidLine Tic CheckTotal ' \
                     + 'ConfirmMonetarySurvey ' \
                     + 'CheckSourceDebitPlanned CheckDestinationCreditPlanned ' \
+                    + 'ResetInventory Tic ' \
+                    + 'DeliverMonetarySurveyFails Tic ' \
+                    + 'DeleteResetInventory Tic ' \
                     + 'DeliverMonetarySurvey ' \
                     + 'CheckSourceDebit CheckDestinationCredit '
     sequence_list.addSequenceString(sequence_string)
diff --git a/product/ERP5Banking/tests/testERP5BankingMoneyDepositRendering.py b/product/ERP5Banking/tests/testERP5BankingMoneyDepositRendering.py
index 3430d11ee9..c7698077f7 100644
--- a/product/ERP5Banking/tests/testERP5BankingMoneyDepositRendering.py
+++ b/product/ERP5Banking/tests/testERP5BankingMoneyDepositRendering.py
@@ -130,7 +130,7 @@ class TestERP5BankingMoneyDepositRendering(TestERP5BankingMixin, ERP5TypeTestCas
                              'variation_value': ('emission_letter/p', 'cash_status/not_defined') + self.variation_list,
                              'quantity': self.quantity_200}
 
-    line_list = [inventory_dict_line_1, inventory_dict_line_2]
+    self.line_list = line_list = [inventory_dict_line_1, inventory_dict_line_2]
     self.document_vault = self.paris.surface.gros_versement.guichet_1.encaisse_des_billets_et_monnaies
     self.gros_versement = self.paris.surface.gros_versement.guichet_1.encaisse_des_billets_et_monnaies.entrante
     self.counter_vault = self.paris.surface.gros_versement.guichet_1
@@ -508,9 +508,6 @@ class TestERP5BankingMoneyDepositRendering(TestERP5BankingMixin, ERP5TypeTestCas
     self.assertEqual(state, 'delivered')
     # get workflow history
     workflow_history = self.workflow_tool.getInfoFor(ob=self.money_deposit_rendering, name='history', wf_id='money_deposit_rendering_workflow')
-    # check len of len workflow history is 8
-    self.assertEqual(len(workflow_history), 8)
-
 
   def stepCheckSourceDebit(self, sequence=None, sequence_list=None, **kwd):
     """
@@ -535,6 +532,19 @@ class TestERP5BankingMoneyDepositRendering(TestERP5BankingMixin, ERP5TypeTestCas
     self.assertEqual(self.simulation_tool.getCurrentInventory(node=self.auxiliaire.getRelativeUrl(), resource = self.piece_200.getRelativeUrl()), 12.0)
     self.assertEqual(self.simulation_tool.getFutureInventory(node=self.auxiliaire.getRelativeUrl(), resource = self.piece_200.getRelativeUrl()), 12.0)
 
+  def stepResetInventory(self, 
+               sequence=None, sequence_list=None, **kwd):
+    node = self.gros_versement
+    line_list = self.line_list
+    self.resetInventory(destination=node, currency=self.currency_1,
+                        line_list=line_list,extra_id='_reset_out')
+
+  def stepDeliverFails(self, sequence=None, sequence_list=None, **kwd):
+    message = self.assertWorkflowTransitionFails(self.money_deposit_rendering,
+              'money_deposit_rendering_workflow','deliver_action')
+    self.failUnless(message.find('Insufficient balance')>=0)
+
+
 
   ##################################
   ##  Tests
@@ -559,6 +569,9 @@ class TestERP5BankingMoneyDepositRendering(TestERP5BankingMixin, ERP5TypeTestCas
                     + 'OrderMoneyDepositRendering ' \
                     + 'Tic CheckSourceDebitPlanned CheckDestinationCreditPlanned ' \
                     + 'ConfirmMoneyDepositRendering ' \
+                    + 'ResetInventory Tic ' \
+                    + 'DeliverFails Tic ' \
+                    + 'DeleteResetInventory Tic ' \
                     + 'DeliverMoneyDepositRendering ' \
                     + 'CheckSourceDebit CheckDestinationCredit '
     sequence_list.addSequenceString(sequence_string)
-- 
2.30.9