Commit 196ae7f5 authored by Vincent Pelletier's avatar Vincent Pelletier

Cleanup test

- Remove unrelated/trivial comments
- Remove extra empty lines
- Follow Nexedi coding style (spacing, word-wrap)
- Merge use-once code
- Factorise many attribute accesses
- Stop testing newContent
- Replace len(foo.objectValues()) by len(foo)
- Factorise some duplicate "magic values"
- Merge uselesly splitted steps (and provide backward compatibility)
- Use full step names in sequence, for easier lookups


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@39006 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 1374cb6f
...@@ -25,9 +25,6 @@ ...@@ -25,9 +25,6 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# #
############################################################################## ##############################################################################
# import requested python module
import os import os
from Products.ERP5Type.tests.Sequence import SequenceList from Products.ERP5Type.tests.Sequence import SequenceList
from Products.ERP5Banking.tests.TestERP5BankingMixin import TestERP5BankingMixin from Products.ERP5Banking.tests.TestERP5BankingMixin import TestERP5BankingMixin
...@@ -37,7 +34,6 @@ os.environ['EVENT_LOG_FILE'] = os.path.join(os.getcwd(), 'zLOG.log') ...@@ -37,7 +34,6 @@ os.environ['EVENT_LOG_FILE'] = os.path.join(os.getcwd(), 'zLOG.log')
# Define the level of log we want, here is all # Define the level of log we want, here is all
os.environ['EVENT_LOG_SEVERITY'] = '-300' os.environ['EVENT_LOG_SEVERITY'] = '-300'
class TestERP5BankingCashToCurrencySale(TestERP5BankingMixin): class TestERP5BankingCashToCurrencySale(TestERP5BankingMixin):
""" """
Unit test for the cash exchange module Unit test for the cash exchange module
...@@ -56,16 +52,13 @@ class TestERP5BankingCashToCurrencySale(TestERP5BankingMixin): ...@@ -56,16 +52,13 @@ class TestERP5BankingCashToCurrencySale(TestERP5BankingMixin):
0 coin of 200 0 coin of 200
34 banknotes of 5000 34 banknotes of 5000
24 coin of 100 24 coin of 100
""" """
# pseudo constants # pseudo constants
RUN_ALL_TEST = 1 # we want to run all test RUN_ALL_TEST = 1 # we want to run all test
QUIET = 0 # we don't want the test to be quiet QUIET = 0 # we don't want the test to be quiet
outgoing_quantity_5000 = {'variation/1992':4, 'variation/2003':6} outgoing_quantity_5000 = {'variation/1992': 4, 'variation/2003': 6}
outgoing_quantity_100 = {'variation/1992':200, 'variation/2003':0} outgoing_quantity_100 = {'variation/1992': 200, 'variation/2003': 0}
def getTitle(self): def getTitle(self):
""" """
...@@ -73,67 +66,55 @@ class TestERP5BankingCashToCurrencySale(TestERP5BankingMixin): ...@@ -73,67 +66,55 @@ class TestERP5BankingCashToCurrencySale(TestERP5BankingMixin):
""" """
return "ERP5BankingCashToCurrencySale" return "ERP5BankingCashToCurrencySale"
def getCashToCurrencySaleModule(self):
"""
Return the Cash To Currency Sale Module
"""
return getattr(self.getPortal(), 'cash_to_currency_sale_module', None)
def afterSetUp(self): def afterSetUp(self):
""" """
Method called before the launch of the test to initialize some data Method called before the launch of the test to initialize some data
""" """
self.initDefaultVariable() self.initDefaultVariable()
# Set some variables : # Set some variables :
self.cash_to_currency_sale_module = self.getCashToCurrencySaleModule() self.cash_to_currency_sale_module = \
self.getPortal().cash_to_currency_sale_module
# Create a user and login as manager to populate the erp5 portal with objects for tests. # Create a user and login as manager to populate the erp5 portal with
# objects for tests.
self.createManagerAndLogin() self.createManagerAndLogin()
self.createFunctionGroupSiteCategory() self.createFunctionGroupSiteCategory()
""" """
Windows to create the BANKNOTES of 10 000 and 5000, coins 200. Windows to create the BANKNOTES of 10 000 and 5000, coins 200.
It s same to click to the fast input button. It s same to click to the fast input button.
""" """
self.line_list = line_list_sortante = [{
inventory_dict_line_1 = {'id' : 'inventory_line_1', 'id': 'inventory_line_1',
'resource': self.usd_billet_20, 'resource': self.usd_billet_20,
'variation_id': ('emission_letter', 'cash_status', 'variation'), 'variation_id': ('emission_letter', 'cash_status', 'variation'),
'variation_value': ('emission_letter/not_defined', 'cash_status/not_defined') + self.usd_variation_list, 'variation_value': ('emission_letter/not_defined',
'cash_status/not_defined') + self.usd_variation_list,
'variation_list': self.usd_variation_list, 'variation_list': self.usd_variation_list,
'quantity': self.quantity_usd_20} 'quantity': self.quantity_usd_20,
}, ]
self.line_list = line_list_sortante = [inventory_dict_line_1]
self.guichet_entrante = self.paris.surface.banque_interne.guichet_1.encaisse_des_billets_et_monnaies.entrante self.guichet = counter = self.paris.surface.banque_interne.guichet_1
self.guichet_sortante = self.paris.surface.banque_interne.guichet_1.encaisse_des_devises.usd.sortante self.guichet_entrante = counter.encaisse_des_billets_et_monnaies.entrante
self.guichet = self.paris.surface.banque_interne.guichet_1 self.guichet_sortante = counter.encaisse_des_devises.usd.sortante
self.createCashInventory(source=None, destination=self.guichet_sortante,
currency=self.currency_2, line_list=line_list_sortante)
self.createCashInventory(source=None, destination=self.guichet_sortante, currency=self.currency_2,
line_list=line_list_sortante)
# now we need to create a user as Manager to do the test # now we need to create a user as Manager to do the test
# in order to have an assigment defined which is used to do transition # in order to have an assigment defined which is used to do transition
# Create an Organisation that will be used for users assignment # Create an Organisation that will be used for users assignment
self.checkUserFolderType() self.checkUserFolderType()
self.organisation = self.organisation_module.newContent(id='paris', portal_type='Organisation', self.organisation = self.organisation_module.newContent(id='paris',
function='banking', group='baobab', site='testsite/paris') portal_type='Organisation', function='banking', group='baobab',
site=self.paris.getRelativeUrl())
# define the user # define the user
user_dict = { self.createERP5Users({
'super_user' : [['Manager'], self.organisation, 'banking/comptable', 'baobab', 'testsite/paris/surface/banque_interne/guichet_1'] 'super_user' : [['Manager'], self.organisation, 'banking/comptable',
} 'baobab', counter.getRelativeUrl()],
# call method to create this user }, )
self.createERP5Users(user_dict)
self.logout() self.logout()
self.login('super_user') self.login('super_user')
# open counter date and counter # open counter date and counter
self.openCounterDate(site=self.paris.surface.banque_interne.guichet_1) self.openCounterDate(site=counter)
self.openCounter(site=self.paris.surface.banque_interne.guichet_1) self.openCounter(site=counter)
def stepCheckObjects(self, sequence=None, sequence_list=None, **kwd): def stepCheckObjects(self, sequence=None, sequence_list=None, **kwd):
""" """
...@@ -143,289 +124,289 @@ class TestERP5BankingCashToCurrencySale(TestERP5BankingMixin): ...@@ -143,289 +124,289 @@ class TestERP5BankingCashToCurrencySale(TestERP5BankingMixin):
""" """
self.checkResourceCreated() self.checkResourceCreated()
# check that CashToCurrencySale Module was created # check that CashToCurrencySale Module was created
self.assertEqual(self.cash_to_currency_sale_module.getPortalType(), 'Cash To Currency Sale Module') self.assertEqual(self.cash_to_currency_sale_module.getPortalType(),
'Cash To Currency Sale Module')
# check cash sorting module is empty # check cash sorting module is empty
self.assertEqual(len(self.cash_to_currency_sale_module.objectValues()), 0) self.assertEqual(len(self.cash_to_currency_sale_module.objectValues()), 0)
def stepCheckInitialInventoryGuichet(self, sequence=None, sequence_list=None,
def stepCheckInitialInventoryGuichet_Entrante(self, sequence=None, sequence_list=None, **kwd): **kwd):
""" """
Check the initial inventory before any operations Check the initial inventory before any operations
""" """
simulation_tool = self.getSimulationTool()
self.simulation_tool = self.getSimulationTool() getCurrentInventory = simulation_tool.getCurrentInventory
self.assertEqual(self.simulation_tool.getCurrentInventory(node=self.guichet_entrante.getRelativeUrl(), resource = self.billet_5000.getRelativeUrl()), 0.0) getFutureInventory = simulation_tool.getFutureInventory
self.assertEqual(self.simulation_tool.getFutureInventory(node=self.guichet_entrante.getRelativeUrl(), resource = self.billet_5000.getRelativeUrl()), 0.0) incoming_counter = self.guichet_entrante.getRelativeUrl()
# check we have 0 coin of 100 in encaisse_paris outgoing_counter = self.guichet_sortante.getRelativeUrl()
self.assertEqual(self.simulation_tool.getCurrentInventory(node=self.guichet_entrante.getRelativeUrl(), resource = self.piece_100.getRelativeUrl()), 0.0) banknote_5000 = self.billet_5000.getRelativeUrl()
self.assertEqual(self.simulation_tool.getFutureInventory(node=self.guichet_entrante.getRelativeUrl(), resource = self.piece_100.getRelativeUrl()), 0.0) banknote_100 = self.billet_100.getRelativeUrl()
banknote_usd_20 = self.usd_billet_20.getRelativeUrl()
self.assertEqual(getCurrentInventory(node=incoming_counter,
def stepCheckInitialInventoryGuichet_Sortante(self, sequence=None, sequence_list=None, **kwd): resource=banknote_5000), 0.0)
""" self.assertEqual(getFutureInventory(node=incoming_counter,
Check the initial inventory before any operations resource=banknote_5000), 0.0)
""" self.assertEqual(getCurrentInventory(node=incoming_counter,
self.simulation_tool = self.getSimulationTool() resource=banknote_100), 0.0)
# check we have 0 banknotes of 10000 in encaisse_paris self.assertEqual(getFutureInventory(node=incoming_counter,
self.assertEqual(self.simulation_tool.getCurrentInventory(node=self.guichet_sortante.getRelativeUrl(), resource = self.usd_billet_20.getRelativeUrl()), 5.0) resource=banknote_100), 0.0)
self.assertEqual(self.simulation_tool.getFutureInventory(node=self.guichet_sortante.getRelativeUrl(), resource = self.usd_billet_20.getRelativeUrl()), 5.0)
self.assertEqual(getCurrentInventory(node=outgoing_counter,
resource=banknote_usd_20), 5.0)
self.assertEqual(getFutureInventory(node=outgoing_counter,
resource=banknote_usd_20), 5.0)
def stepCreateCashToCurrencySale(self, sequence=None, sequence_list=None, **kwd): def stepCreateCashToCurrencySale(self, sequence=None, sequence_list=None, **kwd):
""" """
Create a cash sorting document and check it Create a cash sorting document and check it
""" """
# Create Cash sorting module = self.cash_to_currency_sale_module
self.cash_to_currency_sale = self.cash_to_currency_sale_module.newContent( self.cash_to_currency_sale = cash_to_currency_sale = module.newContent(
id='cash_to_currency_sale_1', id='cash_to_currency_sale_1',
portal_type='Cash To Currency Sale', portal_type='Cash To Currency Sale',
source_value=self.guichet, source_value=self.guichet,
destination_value=None, destination_value=None,
description='test', description='test',
resource_value = self.currency_2, resource_value=self.currency_2,
source_total_asset_price=100.0, source_total_asset_price=100.0,
discount = 3000.0, quantity = 70000.0) discount=3000.0,
# execute tic quantity=70000.0,
)
self.assertEqual(len(module), 1)
self.assertEqual(cash_to_currency_sale.getSource(),
'site/testsite/paris/surface/banque_interne/guichet_1')
self.assertEqual(cash_to_currency_sale.getDestination(), None)
self.setDocumentSourceReference(cash_to_currency_sale)
self.stepTic() self.stepTic()
# check we have only one cash sorting
self.assertEqual(len(self.cash_to_currency_sale_module.objectValues()), 1)
# get the cash sorting document
self.cash_to_currency_sale = getattr(self.cash_to_currency_sale_module, 'cash_to_currency_sale_1')
# check its portal type
self.assertEqual(self.cash_to_currency_sale.getPortalType(), 'Cash To Currency Sale')
# check that its source is encaisse_paris
self.assertEqual(self.cash_to_currency_sale.getSource(), 'site/testsite/paris/surface/banque_interne/guichet_1')
# check that its destination is guichet_1
self.assertEqual(self.cash_to_currency_sale.getDestination(), None)
self.setDocumentSourceReference(self.cash_to_currency_sale)
def stepCreateValidIncomingLine(self, sequence=None, sequence_list=None,
#def stepCreateValidIncomingLine(self, sequence=None, sequence_list=None, **kwd): **kwd):
def stepCreateValidIncomingLine(self, sequence=None, sequence_list=None, **kwd): container = self.cash_to_currency_sale
""" line_1_id = 'valid_incoming_line_1'
Create the cash exchange incoming line with banknotes of 10000 and check it has been well created self.addCashLineToDelivery(
""" container,
# create the cash exchange line line_1_id,
self.addCashLineToDelivery(self.cash_to_currency_sale, 'valid_incoming_line_1', 'Incoming Cash To Currency Sale Line', self.billet_5000, 'Incoming Cash To Currency Sale Line',
('emission_letter', 'cash_status', 'variation'), ('emission_letter/not_defined', 'cash_status/valid') + self.variation_list, self.billet_5000,
self.outgoing_quantity_5000) ('emission_letter', 'cash_status', 'variation'),
# execute tic ('emission_letter/not_defined', 'cash_status/valid') + \
self.stepTic() self.variation_list,
# check there is only one line created self.outgoing_quantity_5000,
self.assertEqual(len(self.cash_to_currency_sale.objectValues()), 1) )
# get the cash exchange line self.assertEqual(len(container), 1)
self.valid_incoming_line = getattr(self.cash_to_currency_sale, 'valid_incoming_line_1') line_1 = getattr(container, line_1_id)
# check its portal type self.assertEqual(line_1.getResourceValue(), self.billet_5000)
self.assertEqual(self.valid_incoming_line.getPortalType(), 'Incoming Cash To Currency Sale Line') self.assertEqual(line_1.getPrice(), 5000.0)
self.assertEqual(self.valid_incoming_line.getResourceValue(), self.billet_5000) self.assertEqual(line_1.getQuantityUnit(), 'unit')
self.assertEqual(self.valid_incoming_line.getPrice(), 5000.0) self.assertEqual(len(line_1), 2)
self.assertEqual(self.valid_incoming_line.getQuantityUnit(), 'unit')
self.assertEqual(len(self.valid_incoming_line.objectValues()), 2)
for variation in self.variation_list: for variation in self.variation_list:
# get the delivery cell cell = line_1.getCell('emission_letter/not_defined', variation,
cell = self.valid_incoming_line.getCell('emission_letter/not_defined', variation, 'cash_status/valid') 'cash_status/valid')
# chek portal types
self.assertEqual(cell.getPortalType(), 'Cash Delivery Cell') self.assertEqual(cell.getPortalType(), 'Cash Delivery Cell')
self.assertEqual(cell.getResourceValue(), self.billet_5000) self.assertEqual(cell.getResourceValue(), self.billet_5000)
self.assertEqual(cell.getBaobabSource(), None) self.assertEqual(cell.getBaobabSource(), None)
# check the destination vault is guichet_1 self.assertEqual(cell.getBaobabDestination(),
self.assertEqual(cell.getBaobabDestination(), 'site/testsite/paris/surface/banque_interne/guichet_1/encaisse_des_billets_et_monnaies/entrante') self.guichet_entrante.getRelativeUrl())
if cell.getId() == 'movement_0_0_0': cell_id = cell.getId()
if cell_id == 'movement_0_0_0':
self.assertEqual(cell.getQuantity(), 4.0) self.assertEqual(cell.getQuantity(), 4.0)
elif cell.getId() == 'movement_0_1_0': elif cell_id == 'movement_0_1_0':
self.assertEqual(cell.getQuantity(), 6.0) self.assertEqual(cell.getQuantity(), 6.0)
else: else:
self.fail('Wrong cell created : %s' % cell.getId()) self.fail('Unexpected cell id: %s' % (cell_id, ))
self.addCashLineToDelivery(self.cash_to_currency_sale, 'valid_incoming_line_2', 'Incoming Cash To Currency Sale Line', self.piece_100, line_2_id = 'valid_incoming_line_2'
('emission_letter', 'cash_status', 'variation'), ('emission_letter/not_defined', 'cash_status/valid') + self.variation_list, self.addCashLineToDelivery(
self.outgoing_quantity_100) container,
# execute tic line_2_id,
self.stepTic() 'Incoming Cash To Currency Sale Line',
# check there is only one line created self.piece_100,
self.assertEqual(len(self.cash_to_currency_sale.objectValues()), 2) ('emission_letter', 'cash_status', 'variation'),
# get the cash exchange line ('emission_letter/not_defined', 'cash_status/valid') + \
self.valid_incoming_line = getattr(self.cash_to_currency_sale, 'valid_incoming_line_2') self.variation_list,
# check its portal type self.outgoing_quantity_100,
self.assertEqual(self.valid_incoming_line.getPortalType(), 'Incoming Cash To Currency Sale Line') )
self.assertEqual(self.valid_incoming_line.getResourceValue(), self.piece_100) self.assertEqual(len(container), 2)
# chek the value of the banknote line_2 = getattr(self.cash_to_currency_sale, line_2_id)
self.assertEqual(self.valid_incoming_line.getPrice(), 100.0) self.assertEqual(line_2.getPortalType(),
# check the unit of banknote 'Incoming Cash To Currency Sale Line')
self.assertEqual(self.valid_incoming_line.getQuantityUnit(), 'unit') self.assertEqual(line_2.getResourceValue(), self.piece_100)
self.assertEqual(len(self.valid_incoming_line.objectValues()), 2) self.assertEqual(line_2.getPrice(), 100.0)
self.assertEqual(line_2.getQuantityUnit(), 'unit')
self.assertEqual(len(line_2), 2)
for variation in self.variation_list: for variation in self.variation_list:
# get the delivery cell cell = line_2.getCell('emission_letter/not_defined', variation,
cell = self.valid_incoming_line.getCell('emission_letter/not_defined', variation, 'cash_status/valid') 'cash_status/valid')
# chek portal types
self.assertEqual(cell.getPortalType(), 'Cash Delivery Cell') self.assertEqual(cell.getPortalType(), 'Cash Delivery Cell')
self.assertEqual(cell.getResourceValue(), self.piece_100) self.assertEqual(cell.getResourceValue(), self.piece_100)
self.assertEqual(cell.getBaobabSource(), None) self.assertEqual(cell.getBaobabSource(), None)
# check the destination vault is guichet_1 self.assertEqual(cell.getBaobabDestination(),
self.assertEqual(cell.getBaobabDestination(), 'site/testsite/paris/surface/banque_interne/guichet_1/encaisse_des_billets_et_monnaies/entrante') self.guichet_entrante.getRelativeUrl())
if cell.getId() == 'movement_0_0_0': cell_id = cell.getId()
if cell_id == 'movement_0_0_0':
self.assertEqual(cell.getQuantity(), 200.0) self.assertEqual(cell.getQuantity(), 200.0)
elif cell.getId() == 'movement_0_1_0': elif cell_id == 'movement_0_1_0':
self.assertEqual(cell.getQuantity(), 0.0) self.assertEqual(cell.getQuantity(), 0.0)
else: else:
self.fail('Wrong cell created : %s' % cell.getId()) self.fail('Unexpected cell id: %s' % (cell_id, ))
# execute tic
self.stepTic()
def stepCheckSubTotal(self, sequence=None, sequence_list=None, **kwd): def stepCheckSubTotal(self, sequence=None, sequence_list=None, **kwd):
""" document = self.cash_to_currency_sale
Check the amount after the creation of cash exchange line 1
"""
# Check number of lines # Check number of lines
self.assertEqual(len(self.cash_to_currency_sale.objectValues()), 2) self.assertEqual(len(document), 2)
self.assertEqual(self.cash_to_currency_sale.getTotalQuantity(fast=0, portal_type="Incoming Cash To Currency Sale Line"), 210) self.assertEqual(document.getTotalQuantity(fast=0,
portal_type="Incoming Cash To Currency Sale Line"),
210)
# Check the total price # Check the total price
self.assertEqual(self.cash_to_currency_sale.getTotalPrice(fast=0, portal_type="Incoming Cash To Currency Sale Line"), 5000 * 4.0 + 100 * 0.0 + 5000 * 6.0 + 100 * 200.0) self.assertEqual(document.getTotalPrice(fast=0,
portal_type="Incoming Cash To Currency Sale Line"),
5000 * 4.0 + 100 * 0.0 + 5000 * 6.0 + 100 * 200.0)
def stepCreateValidOutgoingLine(self, sequence=None, sequence_list=None, **kwd):
""" def stepCreateValidOutgoingLine(self, sequence=None, sequence_list=None,
Create the cash exchange incoming line with banknotes of 10000 and check it has been well created **kwd):
""" container = self.cash_to_currency_sale
# create the cash exchange line line_id = 'valid_outgoing_line_1'
self.addCashLineToDelivery(self.cash_to_currency_sale, self.addCashLineToDelivery(
'valid_outgoing_line_1', 'Outgoing Cash To Currency Sale Line', container,
line_id,
'Outgoing Cash To Currency Sale Line',
self.usd_billet_20, self.usd_billet_20,
('emission_letter', 'cash_status', 'variation'), ('emission_letter', 'cash_status', 'variation'),
('emission_letter/not_defined', 'cash_status/not_defined') + \ ('emission_letter/not_defined', 'cash_status/not_defined') + \
self.usd_variation_list, self.usd_variation_list,
self.quantity_usd_20, self.quantity_usd_20,
variation_list = self.usd_variation_list) variation_list=self.usd_variation_list,
# execute tic )
self.stepTic() self.assertEqual(len(container), 3)
# check there is only one line created
self.assertEqual(len(self.cash_to_currency_sale.objectValues()), 3)
# get the cash exchange line # get the cash exchange line
self.valid_outgoing_line = getattr(self.cash_to_currency_sale, 'valid_outgoing_line_1') line = getattr(container, line_id)
# check its portal type # check its portal type
self.assertEqual(self.valid_outgoing_line.getPortalType(), 'Outgoing Cash To Currency Sale Line') self.assertEqual(line.getPortalType(),
'Outgoing Cash To Currency Sale Line')
# check the resource is banknotes of 20 # check the resource is banknotes of 20
self.assertEqual(self.valid_outgoing_line.getResourceValue(), self.usd_billet_20) self.assertEqual(line.getResourceValue(), self.usd_billet_20)
# chek the value of the banknote # chek the value of the banknote
self.assertEqual(self.valid_outgoing_line.getPrice(), 20.0) self.assertEqual(line.getPrice(), 20.0)
self.assertEqual(self.valid_outgoing_line.getQuantityUnit(), 'unit') self.assertEqual(line.getQuantityUnit(), 'unit')
self.assertEqual(len(self.valid_outgoing_line.objectValues()), 1) self.assertEqual(len(line), 1)
for variation in self.usd_variation_list: for variation in self.usd_variation_list:
cell = self.valid_outgoing_line.getCell('emission_letter/not_defined', variation, 'cash_status/not_defined') cell = line.getCell('emission_letter/not_defined', variation,
'cash_status/not_defined')
self.assertEqual(cell.getPortalType(), 'Cash Delivery Cell') self.assertEqual(cell.getPortalType(), 'Cash Delivery Cell')
self.assertEqual(cell.getResourceValue(), self.usd_billet_20) self.assertEqual(cell.getResourceValue(), self.usd_billet_20)
self.assertEqual(cell.getBaobabSource(), 'site/testsite/paris/surface/banque_interne/guichet_1/encaisse_des_devises/usd/sortante') self.assertEqual(cell.getBaobabSource(),
self.guichet_sortante.getRelativeUrl())
self.assertEqual(cell.getBaobabDestination(), None) self.assertEqual(cell.getBaobabDestination(), None)
if cell.getId() == 'movement_0_0_0': cell_id = cell.getId()
if cell_id == 'movement_0_0_0':
self.assertEqual(cell.getQuantity(), 5.0) self.assertEqual(cell.getQuantity(), 5.0)
else: else:
self.fail('Wrong cell created : %s' % cell.getId()) self.fail('Wrong cell created : %s' % (cell_id, ))
self.stepTic()
def stepCheckTotal(self, sequence=None, sequence_list=None, **kwd): def stepCheckTotal(self, sequence=None, sequence_list=None, **kwd):
""" document = self.cash_to_currency_sale
Check the total after the creation of the two cash exchange lines self.assertEqual(len(document), 3)
""" self.assertEqual(document.getTotalQuantity(fast=0,
# Check number of lines (line1 + line2) portal_type="Outgoing Cash To Currency Sale Line"), 5.0)
self.assertEqual(len(self.cash_to_currency_sale.objectValues()), 3) self.assertEqual(document.getTotalPrice(fast=0,
# Check quantity, banknotes : 2 for 1992 and 3 for 2003, coin : 5 for 1992 and 7 for 2003 portal_type="Outgoing Cash To Currency Sale Line"), 20 * 5.0)
self.assertEqual(self.cash_to_currency_sale.getTotalQuantity(fast=0, portal_type="Outgoing Cash To Currency Sale Line"), 5.0)
# check the total price def stepDeliverCashToCurrencySale(self, sequence=None, sequence_list=None,
self.assertEqual(self.cash_to_currency_sale.getTotalPrice(fast=0, portal_type="Outgoing Cash To Currency Sale Line"), 20 * 5.0) **kwd):
def stepDeliverCashToCurrencySale(self, sequence=None, sequence_list=None, **kwd):
"""
Deliver the cash sorting with a good user
and check that the deliver of a cash tranfer have achieved
"""
#self.cash_to_currency_sale.setSourceTotalAssetPrice('52400.0') #self.cash_to_currency_sale.setSourceTotalAssetPrice('52400.0')
# self.security_manager = AccessControl.getSecurityManager() # self.security_manager = AccessControl.getSecurityManager()
# self.user = self.security_manager.getUser() # self.user = self.security_manager.getUser()
# do the workflow transition "deliver_action" # do the workflow transition "deliver_action"
self.workflow_tool.doActionFor(self.cash_to_currency_sale, 'deliver_action', wf_id='cash_to_currency_sale_workflow') document = self.cash_to_currency_sale
self.workflow_tool.doActionFor(document, 'deliver_action',
wf_id='cash_to_currency_sale_workflow')
# check that state is delivered
self.assertEqual(document.getSimulationState(), 'delivered')
# execute tic # execute tic
self.stepTic() self.stepTic()
# get state of cash sorting
state = self.cash_to_currency_sale.getSimulationState()
# check that state is delivered
self.assertEqual(state, 'delivered')
# get workflow history
workflow_history = self.workflow_tool.getInfoFor(ob=self.cash_to_currency_sale, name='history', wf_id='cash_to_currency_sale_workflow')
def stepCheckFinalInventoryGuichet_Entrante(self, sequence=None, sequence_list=None, **kwd):
"""
Check the initial inventory before any operations
"""
self.simulation_tool = self.getSimulationTool()
self.assertEqual(self.simulation_tool.getCurrentInventory(node=self.guichet_entrante.getRelativeUrl(), resource = self.billet_5000.getRelativeUrl()), 10.0)
self.assertEqual(self.simulation_tool.getFutureInventory(node=self.guichet_entrante.getRelativeUrl(), resource = self.billet_5000.getRelativeUrl()), 10.0)
# check we have 0 coin of 100 in encaisse_paris
self.assertEqual(self.simulation_tool.getCurrentInventory(node=self.guichet_entrante.getRelativeUrl(), resource = self.piece_100.getRelativeUrl()), 200.0)
self.assertEqual(self.simulation_tool.getFutureInventory(node=self.guichet_entrante.getRelativeUrl(), resource = self.piece_100.getRelativeUrl()), 200.0)
def stepCheckFinalInventoryGuichet_Sortante(self, sequence=None, sequence_list=None, **kwd):
"""
Check the initial inventory before any operations
"""
self.simulation_tool = self.getSimulationTool()
# check we have 0 banknotes of 10000 in encaisse_paris
self.assertEqual(self.simulation_tool.getCurrentInventory(node=self.guichet_sortante.getRelativeUrl(), resource = self.usd_billet_20.getRelativeUrl()), 0.0)
self.assertEqual(self.simulation_tool.getFutureInventory(node=self.guichet_sortante.getRelativeUrl(), resource = self.usd_billet_20.getRelativeUrl()), 0.0)
def stepDelCashToCurrencySale(self, sequence=None, sequence_list=None, **kwd): def stepCheckFinalInventoryGuichet(self, sequence=None,
""" sequence_list=None, **kwd):
Delete the invalid vault_transfer line previously create simulation_tool = self.getSimulationTool()
""" getCurrentInventory = simulation_tool.getCurrentInventory
getFutureInventory = simulation_tool.getFutureInventory
incoming_counter = self.guichet_entrante.getRelativeUrl()
outgoing_counter = self.guichet_sortante.getRelativeUrl()
banknote_5000 = self.billet_5000.getRelativeUrl()
banknote_100 = self.billet_100.getRelativeUrl()
banknote_usd_20 = self.usd_billet_20.getRelativeUrl()
self.assertEqual(getCurrentInventory(node=incoming_counter,
resource=banknote_5000), 10.0)
self.assertEqual(getFutureInventory(node=incoming_counter,
resource=banknote_5000), 10.0)
self.assertEqual(getCurrentInventory(node=incoming_counter,
resource=banknote_100), 200.0)
self.assertEqual(getFutureInventory(node=incoming_counter,
resource=banknote_100), 200.0)
self.assertEqual(getCurrentInventory(node=outgoing_counter,
resource=banknote_usd_20), 0.0)
self.assertEqual(getFutureInventory(node=outgoing_counter,
resource=banknote_usd_20), 0.0)
def stepDelCashToCurrencySale(self, sequence=None, sequence_list=None,
**kwd):
self.cash_to_currency_sale_module.deleteContent('cash_to_currency_sale_1') self.cash_to_currency_sale_module.deleteContent('cash_to_currency_sale_1')
def stepResetSourceInventory(self, def stepResetSourceInventory(self, sequence=None, sequence_list=None,
sequence=None, sequence_list=None, **kwd): **kwd):
""" """
Reset a vault Reset a vault
""" """
node = self.guichet_sortante self.resetInventory(
line_list = self.line_list destination=self.guichet_sortante,
self.resetInventory(destination=node, currency=self.currency_1, currency=self.currency_1,
line_list=line_list, extra_id='_reset_out') line_list=self.line_list,
extra_id='_reset_out',
)
def stepDeliverCashToCurrencySaleFails(self, sequence=None, sequence_list=None, **kwd): def stepDeliverCashToCurrencySaleFails(self, sequence=None,
sequence_list=None, **kwd):
""" """
Try if we get Insufficient balance Try if we get Insufficient balance
""" """
message = self.assertWorkflowTransitionFails(self.cash_to_currency_sale, message = self.assertWorkflowTransitionFails(self.cash_to_currency_sale,
'cash_to_currency_sale_workflow', 'deliver_action') 'cash_to_currency_sale_workflow', 'deliver_action')
self.assertTrue(message.find('Insufficient balance')>=0) self.assertTrue(message.find('Insufficient balance') >= 0, message)
################################## # Backward compatibility (merged steps)
## Tests def _noop(*args, **kw):
################################## pass
stepCheckInitialInventoryGuichet_Entrante = stepCheckInitialInventoryGuichet
stepCheckFinalInventoryGuichet_Entrante = stepCheckFinalInventoryGuichet
stepCheckFinalInventoryGuichet_Sortante = _noop
stepCheckInitialInventoryGuichet_Sortante = _noop
def test_01_ERP5BankingCashToCurrencySale(self, quiet=QUIET, run=RUN_ALL_TEST): def test_01_ERP5BankingCashToCurrencySale(self, quiet=QUIET,
run=RUN_ALL_TEST):
""" """
Define the sequence of step that will be play Define the sequence of step that will be play
""" """
if not run: if not run:
return return
sequence_list = SequenceList() sequence_list = SequenceList()
# define the sequence sequence_list.addSequenceString('stepTic stepCheckObjects stepTic '
sequence_string = 'Tic CheckObjects Tic CheckInitialInventoryGuichet_Entrante ' \ 'stepCheckInitialInventoryGuichet '
+ 'CheckInitialInventoryGuichet_Sortante ' \ 'stepCreateCashToCurrencySale '
+ 'CreateCashToCurrencySale ' \ 'stepCreateValidIncomingLine stepCheckSubTotal '
+ 'CreateValidIncomingLine CheckSubTotal ' \ 'stepCreateValidOutgoingLine '
+ 'CreateValidOutgoingLine ' \ 'stepTic stepCheckTotal '
+ 'Tic CheckTotal ' \ 'stepResetSourceInventory stepTic '
+ 'ResetSourceInventory Tic ' \ 'stepDeliverCashToCurrencySaleFails stepTic '
+ 'DeliverCashToCurrencySaleFails Tic ' \ 'stepDeleteResetInventory stepTic '
+ 'DeleteResetInventory Tic ' \ 'stepDeliverCashToCurrencySale stepTic '
+ 'DeliverCashToCurrencySale Tic ' \ 'stepCheckFinalInventoryGuichet_Entrante '
+ 'CheckFinalInventoryGuichet_Entrante ' \ 'stepCheckFinalInventoryGuichet_Sortante'
+ 'CheckFinalInventoryGuichet_Sortante' )
sequence_list.addSequenceString(sequence_string)
# play the sequence
sequence_list.play(self) sequence_list.play(self)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment