############################################################################## # # Copyright (c) 2007-2010 Nexedi SA and Contributors. All Rights Reserved. # Aurelien Calonne <aurel@nexedi.com> # # WARNING: This program as such is intended to be used by professional # programmers who take the whole responsability of assessing all potential # consequences resulting from its eventual inadequacies and bugs # End users who are looking for a ready-to-use solution with commercial # garantees and support are strongly adviced to contract a Free Software # Service Company # # This program is Free Software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # ############################################################################## # import requested python module import os from Products.ERP5Type.tests.Sequence import SequenceList from Products.DCWorkflow.DCWorkflow import Unauthorized, ValidationFailed from Products.ERP5Banking.tests.TestERP5BankingMixin import TestERP5BankingMixin from DateTime import DateTime # Needed in order to have a log file inside the current folder os.environ['EVENT_LOG_FILE'] = os.path.join(os.getcwd(), 'zLOG.log') # Define the level of log we want, here is all os.environ['EVENT_LOG_SEVERITY'] = '-300' class TestERP5BankingInventory(TestERP5BankingMixin): """ This class is a unit test to check the module of Bank Account Inventory """ RUN_ALL_TEST = 1 QUIET = 0 def getTitle(self): """ Return the title of the test """ return "ERP5BankingBankAccountInventory" def afterSetUp(self): """ Method called before the launch of the test to initialize some data """ self.initDefaultVariable() self.inventory_module = self.getBankAccountInventoryModule() self.createManagerAndLogin() self.createFunctionGroupSiteCategory(no_site=1) self.currency_1 = self.currency_module['EUR'] # Create a person and a bank account to test self.person_1 = self.createPerson(id='person_1', first_name='toto', last_name='titi') self.bank_account_1 = self.createBankAccount(person=self.person_1, account_id='bank_account_1', currency=self.currency_1, amount=0, internal_bank_account_number="343434343434") self.site = self.paris def stepCheckInitialInventory(self, sequence=None, sequence_list=None, **kwd): """ Check the initial inventory before any operations """ self.simulation_tool = self.getSimulationTool() # for bank account self.assertEqual(self.simulation_tool.getCurrentInventory( payment=self.bank_account_1.getRelativeUrl()), 0.0) self.assertEqual(self.simulation_tool.getFutureInventory( payment=self.bank_account_1.getRelativeUrl()), 0.0) # for agency self.assertEqual(self.simulation_tool.getCurrentInventory( payment=self.site.getRelativeUrl()), 0.0) self.assertEqual(self.simulation_tool.getFutureInventory( payment=self.site.getRelativeUrl()), 0.0) def stepCreateBankAccountInventoryGroup(self, sequence=None, sequence_list=None, **kwd): """ Create a cash inventory document and check it """ inventory_group = self.inventory_module.newContent(id='inventory_group_1', portal_type='Bank Account Inventory Group', site_value=self.site, start_date = DateTime()) self.assertNotEqual(inventory_group, None) self.stepTic() self.assertEqual(len(self.inventory_module.objectValues()), 1) self.inventory_group = getattr(self.inventory_module, 'inventory_group_1') self.assertEqual(self.inventory_group.getPortalType(), 'Bank Account Inventory Group') self.assertEqual(self.inventory_group.getSource(), None) self.assertEqual(self.inventory_group.getDestination(), None) self.assertEqual(self.inventory_group.getSite(), 'testsite/paris') self.assertEqual(self.inventory_group.getSourcePayment(), None) self.assertEqual(self.inventory_group.getDestinationPayment(), None) def stepCreateBankAccountInventory(self, sequence=None, sequence_list=None, **kwd): """ Create a cash inventory document and check it """ inventory = self.inventory_group.newContent(id='inventory_1', portal_type='Bank Account Inventory', destination_payment_value=self.bank_account_1, ) self.assertNotEqual(inventory, None) self.stepTic() self.assertEqual(len(self.inventory_group.objectValues()), 1) self.inventory = getattr(self.inventory_group, 'inventory_1') self.assertEqual(self.inventory.getPortalType(), 'Bank Account Inventory') self.assertEqual(self.inventory.getSource(), "account_module/bank_account") self.assertEqual(self.inventory.getDestination(), "account_module/bank_account") self.assertEqual(self.inventory.getSourcePayment(), None) self.assertEqual(self.inventory.getDestinationPayment(), self.bank_account_1.getRelativeUrl()) def stepCreateBankAccountInventoryLine(self, sequence=None, sequence_list=None, **kwd): """ Create an inventory line document and check it """ inventory_line = self.inventory.newContent(id="line_1", portal_type='Bank Account Inventory Line', resource_value=self.currency_1, quantity=50000) self.assertNotEqual(inventory_line, None) self.stepTic() self.assertEqual(len(self.inventory.objectValues()), 1) self.inventory_line = getattr(self.inventory, 'line_1') self.assertEqual(self.inventory_line.getPortalType(), 'Bank Account Inventory Line') self.assertEqual(self.inventory.getSource(), "account_module/bank_account") self.assertEqual(self.inventory.getDestination(), "account_module/bank_account") self.assertEqual(self.inventory_line.getSourcePayment(), None) self.assertEqual(self.inventory_line.getDestinationPayment(), self.bank_account_1.getRelativeUrl()) self.assertEqual(self.inventory_line.getQuantity(), 50000) def stepCheckFinalInventory(self, sequence=None, sequence_list=None, **kwd): """ Check Final Inventory """ self.simulation_tool = self.getSimulationTool() # for bank account self.assertEqual(self.simulation_tool.getCurrentInventory( payment=self.bank_account_1.getRelativeUrl()), 50000.0) self.assertEqual(self.simulation_tool.getFutureInventory( payment=self.bank_account_1.getRelativeUrl()), 50000.0) # for agency self.assertEqual(self.simulation_tool.getCurrentInventory( payment=self.site.getRelativeUrl()), 0.0) self.assertEqual(self.simulation_tool.getFutureInventory( payment=self.site.getRelativeUrl()), 0.0) ################################## ## Tests ################################## def test_01_ERP5BankingBankAccountInventory(self, quiet=QUIET, run=RUN_ALL_TEST): """ Define the sequence of step that will be play """ if not run: return sequence_list = SequenceList() # define the sequence sequence_string = 'Tic CheckInitialInventory ' \ + 'CreateBankAccountInventoryGroup ' \ + 'CreateBankAccountInventory ' \ + 'CreateBankAccountInventoryLine ' \ + 'CheckFinalInventory' sequence_list.addSequenceString(sequence_string) # play the sequence sequence_list.play(self)