diff --git a/product/ERP5Banking/tests/testERP5BankingMutilatedBanknote.py b/product/ERP5Banking/tests/testERP5BankingMutilatedBanknote.py index 30946ebe1552afb97a1dcfc21920a711393068e0..3ba0cbb6825859a28907f20721066657b6016b59 100755 --- a/product/ERP5Banking/tests/testERP5BankingMutilatedBanknote.py +++ b/product/ERP5Banking/tests/testERP5BankingMutilatedBanknote.py @@ -195,7 +195,7 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): destination_value=self.mutilated_banknote_vault ) self.stepTic() - self.assertEqual(len(self.mutilated_banknote_module.objectValues()), 1) + self.assertTrue(len(self.mutilated_banknote_module.objectValues()) != 0) self.assertEqual(self.mutilated_banknote.getPortalType(), 'Mutilated Banknote') self.assertEqual(self.mutilated_banknote.getSource(), 'site/testsite/paris/surface/banque_interne/guichet_1') self.assertEqual(self.mutilated_banknote.getSourceTrade(), 'site/testsite/paris') @@ -217,6 +217,13 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): self.assertEqual(len(self.mutilated_banknote.objectValues()), 0) self.assertRaises(ValidationFailed, self.workflow_tool.doActionFor, self.mutilated_banknote, 'stop_action', wf_id='mutilated_banknote_workflow') + def stepTryHQStopWithNoLineDefined(self, sequence=None, sequence_list=None, **kw): + """ + Try to stop with no amount defined on the document + """ + self.assertEqual(len(self.hq_mutilated_banknote.objectValues()), 0) + self.assertRaises(ValidationFailed, self.workflow_tool.doActionFor, self.hq_mutilated_banknote, 'stop_action', wf_id='mutilated_banknote_workflow') + def stepCreateIncomingLine(self, sequence=None, sequence_list=None, **kwd): """ Create the incoming mutilated banknote line with banknotes of 10000 and check it has been well created @@ -256,6 +263,13 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): self.assertEqual(self.mutilated_banknote.getSourceTotalAssetPrice(), 0.0) self.assertRaises(ValidationFailed, self.workflow_tool.doActionFor, self.mutilated_banknote, 'stop_action', wf_id='mutilated_banknote_workflow') + def stepTryHQStopWithNoAmountDefined(self, sequence=None, sequence_list=None, **kw): + """ + Try to stop with no amount defined on the document + """ + self.assertEqual(self.hq_mutilated_banknote.getSourceTotalAssetPrice(), 0.0) + self.assertRaises(ValidationFailed, self.workflow_tool.doActionFor, self.hq_mutilated_banknote, 'stop_action', wf_id='mutilated_banknote_workflow') + def stepStopDocument(self, sequence=None, sequence_list=None, **kw): """ Stop mutilated banknote operation @@ -329,6 +343,17 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): self.stepTic() self.assertEqual(self.mutilated_banknote.getSimulationState(), "delivered") + def stepDeliverHQDocument(self, sequence=None, sequence_list=None, **kw): + """ + Deliver mutilated banknote operation. + Also sets the exchanged amount on the document. + """ + self.hq_mutilated_banknote.setDestinationTotalAssetPrice(50000.0) + self.assertEqual(self.hq_mutilated_banknote.getDestinationTotalAssetPrice(), 50000.0) + self.workflow_tool.doActionFor(self.hq_mutilated_banknote, 'deliver_action', wf_id='mutilated_banknote_workflow') + self.stepTic() + self.assertEqual(self.hq_mutilated_banknote.getSimulationState(), "delivered") + def stepCheckFinalInventoryWithNoPayBack(self, sequence=None, sequence_list=None, **kwd): """ Check the final inventory when document got rejected without HQ request @@ -344,6 +369,7 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): """ Remove all operations in module """ + delattr(self, 'mutilated_banknote') self.mutilated_banknote_module.deleteContent('mutilated_banknote') def stepTryFinishWithNoLineDefined(self, sequence=None, sequence_list=None, **kw): @@ -413,16 +439,31 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): self.assertEqual(self.mutilated_banknote.getDestinationTotalAssetPrice(), 4000.0) self.assertRaises(ValidationFailed, self.workflow_tool.doActionFor, self.mutilated_banknote, 'deliver_action', wf_id='mutilated_banknote_workflow') - def stepCreateOutgoingLine(self, sequence=None, sequence_list=None, **kw): + def stepTryDeliverHQWithNoLineDefined(self, sequence=None, sequence_list=None, **kw): + """ + Try to deliver with no outgoing line defined on the document + """ + self.assertEqual(len(self.hq_mutilated_banknote.objectValues(portal_type="Outgoing Mutilated Banknote Line")), 0) + self.assertRaises(ValidationFailed, self.workflow_tool.doActionFor, self.hq_mutilated_banknote, 'deliver_action', wf_id='mutilated_banknote_workflow') + + def stepTryDeliverHQWithWrongAmountDefined(self, sequence=None, sequence_list=None, **kw): + """ + Try to deliver with wrong amount defined on the document at state ordered + """ + self.hq_mutilated_banknote.setDestinationTotalAssetPrice(4000.0) + self.assertEqual(self.hq_mutilated_banknote.getDestinationTotalAssetPrice(), 4000.0) + self.assertRaises(ValidationFailed, self.workflow_tool.doActionFor, self.hq_mutilated_banknote, 'deliver_action', wf_id='mutilated_banknote_workflow') + + def createOutgoingLine(self, mutilated_banknote): """ """ # create an exchanged - self.addCashLineToDelivery(self.mutilated_banknote, 'outgoing_line', 'Outgoing Mutilated Banknote Line', self.billet_10000, + self.addCashLineToDelivery(mutilated_banknote, 'outgoing_line', 'Outgoing Mutilated Banknote Line', self.billet_10000, ('emission_letter', 'cash_status', 'variation'), ('emission_letter/not_defined', 'cash_status/valid') + self.variation_list, self.quantity_10000) self.stepTic() # get the line - self.outgoing_line = getattr(self.mutilated_banknote, 'outgoing_line') + self.outgoing_line = getattr(mutilated_banknote, 'outgoing_line') self.assertEqual(self.outgoing_line.getPortalType(), 'Outgoing Mutilated Banknote Line') self.assertEqual(self.outgoing_line.getResourceValue(), self.billet_10000) self.assertEqual(self.outgoing_line.getPrice(), 10000.0) @@ -442,6 +483,16 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): else: self.fail('Wrong cell created : %s' % cell.getId()) + def stepCreateOutgoingLine(self, sequence=None, sequence_list=None, **kw): + """ + """ + self.createOutgoingLine(self.mutilated_banknote) + + def stepCreateHQOutgoingLine(self, sequence=None, sequence_list=None, **kw): + """ + """ + self.createOutgoingLine(self.hq_mutilated_banknote) + def stepCheckFinalInventoryWithPayBack(self, sequence=None, sequence_list=None, **kwd): self.checkBanknoteInventory(node_path=self.usual_vault.getRelativeUrl(), quantity=0.0, get_inventory_kw={'variation_text': '%cash_status/valid%'}) self.checkBanknoteInventory(node_path=self.usual_vault_incomming.getRelativeUrl(), quantity=5.0) @@ -496,11 +547,11 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): destination_total_asset_price=0.0, destination_value=self.hq_mutilated_banknote_vault, deponent="hq user", - causality_value=self.mutilated_banknote + causality_value=getattr(self, 'mutilated_banknote', None) ) self.hq_mutilated_banknote.edit(source_trade='site/testsite/paris') self.stepTic() - self.assertEqual(len(self.mutilated_banknote_module.objectValues()), 2) + self.assertTrue(len(self.mutilated_banknote_module.objectValues()) != 0) self.assertEqual(self.hq_mutilated_banknote.getPortalType(), 'Mutilated Banknote') self.assertEqual(self.hq_mutilated_banknote.getSource(), owner_assigned_counter) self.assertEqual(self.hq_mutilated_banknote.getSourceTrade(), 'site/testsite/paris') @@ -603,24 +654,6 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): self.assertEqual(self.simulation_tool.getCurrentInventory(node=node_path, resource=resource_path, **get_inventory_kw), quantity) self.assertEqual(self.simulation_tool.getFutureInventory(node=node_path, resource=resource_path, **get_inventory_kw), quantity) - def stepCheckMutilatedBanknoteInventory(self, sequence=None, sequence_list=None, **kwd): - """ - Check mutilated banknote inventory - """ - self.checkBanknoteInventory(node_path=self.mutilated_banknote_vault.getRelativeUrl(), quantity=5.0) - - def stepCheckHQMutilatedBanknoteInventory(self, sequence=None, sequence_list=None, **kwd): - """ - Check HQ mutilated banknote inventory - """ - self.checkBanknoteInventory(node_path=self.hq_mutilated_banknote_vault.getRelativeUrl(), quantity=5.0) - - def stepCheckMaculatedBanknoteInventory(self, sequence=None, sequence_list=None, **kwd): - """ - Check maculated banknote inventory - """ - self.checkBanknoteInventory(node_path=self.maculated_banknote_vault.getRelativeUrl(), quantity=5.0) - def stepCheckHQMaculatedBanknoteInventory(self, sequence=None, sequence_list=None, **kwd): """ Check HQ maculated banknote inventory @@ -640,6 +673,7 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): """ Remove all operations in module """ + delattr(self, 'hq_mutilated_banknote') self.mutilated_banknote_module.deleteContent('hq_mutilated_banknote') def stepCreateHQExchangedLine(self, sequence=None, sequence_list=None, **kw): @@ -682,6 +716,16 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): self.checkBanknoteInventory(node_path=self.hq_usual_vault_incomming.getRelativeUrl(), quantity=5.0) self.checkFinalInventory() + def stepCheckHQFinalInventoryWithHQPayBack(self, sequence=None, sequence_list=None, **kwd): + self.checkBanknoteInventory(node_path=self.hq_mutilated_banknote_vault.getRelativeUrl(), quantity=0.0) + self.checkBanknoteInventory(node_path=self.usual_vault_incomming.getRelativeUrl(), quantity=0.0) + self.checkBanknoteInventory(node_path=self.hq_usual_vault_incomming.getRelativeUrl(), quantity=5.0) + self.checkBanknoteInventory(node_path=self.hq_usual_vault.getRelativeUrl(), quantity=0.0) + self.checkBanknoteInventory(node_path=self.mutilated_banknote_vault.getRelativeUrl(), quantity=0.0) + self.checkBanknoteInventory(node_path=self.maculated_banknote_vault.getRelativeUrl(), quantity=0.0) + self.checkBanknoteInventory(node_path=self.hq_mutilated_banknote_vault.getRelativeUrl(), quantity=0.0) + self.checkBanknoteInventory(node_path=self.hq_maculated_banknote_vault.getRelativeUrl(), quantity=0.0) + def CheckInventoryWithIncommingBanknotes(self, node, hq_node): """ Check that mutilated banknotes transmites by agency are in the right stock place. @@ -736,7 +780,6 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): + 'CreateIncomingLine Tic TryStopWithNoAmountDefined ' \ + 'StopDocument Tic ' \ + 'CheckInventoryWithIncommingMutilatedBanknotes ' \ - + 'CheckMutilatedBanknoteInventory ' \ + 'CancelDocument Tic ' \ + 'CheckFinalInventoryWithNoPayBack ClearMutilatedBanknoteModule' @@ -746,7 +789,6 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): + 'CreateIncomingLine Tic ' \ + 'StopDocument Tic ' \ + 'CheckInventoryWithIncommingMaculatedBanknotes ' \ - + 'CheckMaculatedBanknoteInventory ' \ + 'TryFinishWithNoLineDefined CreateExchangedLine Tic TryFinishWithNoAmountDefined FinishDocument Tic ' \ + 'TryDeliverWithNoLineDefined CreateOutgoingLine Tic TryDeliverWithWrongAmountDefined DeliverDocument Tic ' \ + 'CheckFinalInventoryWithPayBack ClearMutilatedBanknoteModule' @@ -763,7 +805,6 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): + 'CreateHQMutilatedBanknote Tic '\ + 'TryStopHQWithNoLineDefined Tic CreateHQIncomingLine Tic TryStopHQWithNoAmountDefined StopHQDocument Tic ' \ + 'CheckHQInventoryWithIncommingMutilatedBanknotes ' \ - + 'CheckHQMutilatedBanknoteInventory ' \ + 'TryPlanHQDocument ' \ + 'CancelHQDocument Tic ' \ + 'HQLogout ' \ @@ -790,10 +831,33 @@ class TestERP5BankingMutilatedBanknote(TestERP5BankingMixin, ERP5TypeTestCase): + 'CreateOutgoingLine Tic DeliverDocument Tic ' \ + 'CheckFinalInventoryWithPayBackAfterHQRequest ClearMutilatedBanknoteModule ClearHQMutilatedBanknoteModule' + # sequence 5 : HQ, no payback, mutilated banknotes + sequence_string_5 = 'Tic CheckObjects Tic CheckHQInitialInventory ' \ + 'HQLogin ' \ + 'CreateHQMutilatedBanknote Tic TryHQStopWithNoLineDefined ' \ + 'CreateHQIncomingLine Tic TryHQStopWithNoAmountDefined ' \ + 'StopHQDocument Tic ' \ + 'CheckHQInventoryWithIncommingMutilatedBanknotes ' \ + 'CancelHQDocument Tic ' \ + 'CheckHQFinalInventoryWithNoPayBack ClearHQMutilatedBanknoteModule' + + # sequence 6 : HQ, pay back, maculated banknotes + sequence_string_6 = 'Tic CheckObjects Tic CheckHQInitialInventory ' \ + 'HQLogin ' \ + 'CreateHQMutilatedBanknote SetHQMaculatedState Tic ' \ + 'CreateHQIncomingLine Tic ' \ + 'StopHQDocument Tic ' \ + 'CheckHQInventoryWithIncommingMaculatedBanknotes ' \ + 'TryFinishHQWithNoLineDefined CreateHQExchangedLine Tic TryFinishHQWithNoAmountDefined FinishHQDocument Tic ' \ + 'TryDeliverHQWithNoLineDefined CreateHQOutgoingLine Tic TryDeliverHQWithWrongAmountDefined DeliverHQDocument Tic ' \ + 'CheckHQFinalInventoryWithHQPayBack ClearHQMutilatedBanknoteModule' + sequence_list.addSequenceString(sequence_string_1) sequence_list.addSequenceString(sequence_string_2) sequence_list.addSequenceString(sequence_string_3) sequence_list.addSequenceString(sequence_string_4) + sequence_list.addSequenceString(sequence_string_5) + sequence_list.addSequenceString(sequence_string_6) # play the sequence sequence_list.play(self)