From 9f28527952ccf3dc299beaf93e98ac3713dba598 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Calonne?= <aurel@nexedi.com>
Date: Fri, 28 Apr 2006 09:08:32 +0000
Subject: [PATCH] add a better categories tree and more categories to do unit
 test

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@6980 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../ERP5Banking/tests/TestERP5BankingMixin.py | 105 +++++++++++-------
 1 file changed, 66 insertions(+), 39 deletions(-)

diff --git a/product/ERP5Banking/tests/TestERP5BankingMixin.py b/product/ERP5Banking/tests/TestERP5BankingMixin.py
index a5c3f15e2c..6cf0c3f616 100644
--- a/product/ERP5Banking/tests/TestERP5BankingMixin.py
+++ b/product/ERP5Banking/tests/TestERP5BankingMixin.py
@@ -69,7 +69,7 @@ class TestERP5BankingMixin:
         obj = brain.getObject()
         userdb_path, user_id = obj.getOwnerTuple()
         obj.assignRoleToSecurityGroup(user_name = user_id)
-  
+
   def assignPASRolesToUser(self, user_name, role_list):
     """
       Assign a list of roles to one user with PAS.
@@ -121,7 +121,7 @@ class TestERP5BankingMixin:
       #   by the assignment workflow when NuxUserGroup is used and
       #   by ERP5Security PAS plugins in the context of PAS use.
       assignment.open()
-      
+
     if self.PAS_installed:
       # reindexing is required for the security to work
       get_transaction().commit()
@@ -140,13 +140,13 @@ class TestERP5BankingMixin:
     Return the person module
     """
     return getattr(self.getPortal(), 'person_module', None)
-  
+
   def getOrganisationModule(self):
     """
     Return the organisation module
     """
     return getattr(self.getPortal(), 'organisation_module', None)
-  
+
   def getCurrencyCashModule(self):
     """
     Return the Currency Cash Module
@@ -164,25 +164,25 @@ class TestERP5BankingMixin:
     Return the Bank Account Inventory Module
     """
     return getattr(self.getPortal(), 'bank_account_inventory_module', None)
-  
+
   def getCurrencyModule(self):
     """
     Return the Currency Module
     """
     return getattr(self.getPortal(), 'currency_module', None)
-  
+
   def getCategoryTool(self):
     """
     Return the Category Tool
     """
     return getattr(self.getPortal(), 'portal_categories', None)
-  
+
   def getWorkflowTool(self):
     """
     Return the Worklfow Tool
     """
     return getattr(self.getPortal(), 'portal_workflow', None)
-  
+
   def getSimulationTool(self):
     """
     Return the Simulation Tool
@@ -200,13 +200,13 @@ class TestERP5BankingMixin:
     Return the Check Deposit Module
     """
     return getattr(self.getPortal(), 'check_deposit_module', None)
-  
+
   def getCheckbookModule(self):
     """
     Return the Checkbook Module
     """
     return getattr(self.getPortal(), 'checkbook_module', None)
-  
+
 
   def getCounterDateModule(self):
     """
@@ -271,12 +271,14 @@ class TestERP5BankingMixin:
     # add the category valid in cash_status which define status of banknotes and coin
     self.cash_status_valid = self.cash_status_base_category.newContent(id='valid', portal_type='Category')
     self.cash_status_to_sort = self.cash_status_base_category.newContent(id='to_sort', portal_type='Category')
-    
+    self.cash_status_cancelled = self.cash_status_base_category.newContent(id='cancelled', portal_type='Category')
+
     self.emission_letter_base_category = getattr(self.category_tool, 'emission_letter')
     # add the category k in emission letter that will be used fo banknotes and coins
-    self.emission_letter_k = self.emission_letter_base_category.newContent(id='k', portal_type='Category')
+    self.emission_letter_p = self.emission_letter_base_category.newContent(id='p', portal_type='Category')
+    self.emission_letter_s = self.emission_letter_base_category.newContent(id='s', portal_type='Category')
     self.emission_letter_b = self.emission_letter_base_category.newContent(id='b', portal_type='Category')
-    self.emission_letter_d = self.emission_letter_base_category.newContent(id='d', portal_type='Category')
+    self.emission_letter_not_defined = self.emission_letter_base_category.newContent(id='not_defined', portal_type='Category')
 
     self.variation_base_category = getattr(self.category_tool, 'variation')
     # add the category 1992 in variation
@@ -305,7 +307,7 @@ class TestERP5BankingMixin:
     # add category unit in quantity_unit which is the unit that will be used for banknotes and coins
     self.variation_base_category = getattr(self.category_tool, 'quantity_unit')
     self.unit = self.variation_base_category.newContent(id='unit', title='Unit')
-    
+
     # get the base category function
     self.function_base_category = getattr(self.category_tool, 'function')
     # add category banking in function which will hold all functions neccessary in a bank (at least for this unit test)
@@ -316,9 +318,12 @@ class TestERP5BankingMixin:
     self.gestionnaire_caisse_courante = self.banking.newContent(id='gestionnaire_caisse_courante', portal_type='Category', codification='CCO')
     self.gestionnaire_caveau = self.banking.newContent(id='gestionnaire_caveau', portal_type='Category', codification='CCV')
     self.caissier_particulier = self.banking.newContent(id='caissier_particulier', portal_type='Category', codification='CGU')
+    self.controleur_caisse_courante = self.banking.newContent(id='controleur_caisse_courante', portal_type='Category', codification='CCC')
+    self.controleur_caveau = self.banking.newContent(id='controleur_caveau', portal_type='Category', codification='CCA')
     self.comptable = self.banking.newContent(id='comptable', portal_type='Category', codification='FXF')
     self.chef_section = self.banking.newContent(id='chef_section_comptable', portal_type='Category', codification='FXS')
     self.chef_comptable = self.banking.newContent(id='chef_comptable', portal_type='Category', codification='CCB')
+    self.chef_de_tri = self.banking.newContent(id='chef_de_tri', portal_type='Category', codification='CTR')
 
     # get the base category group
     self.group_base_category = getattr(self.category_tool, 'group')
@@ -329,33 +334,55 @@ class TestERP5BankingMixin:
     self.site_base_category = getattr(self.category_tool, 'site')
     # add the category testsite in the category site which hold vaults situated in the bank
     self.testsite = self.site_base_category.newContent(id='testsite', portal_type='Category', codification='TEST', vault_type='site')
-    # add vault caisse_1 in testsite
-    self.caisse_1 = self.testsite.newContent(id='caisse_1', portal_type='Category', codification='C1',  vault_type='site/vault')
-    # add vault caisse_2 in testsite
-    self.caisse_2 = self.testsite.newContent(id='caisse_2', portal_type='Category', codification='C2',  vault_type='site/vault')
-    self.siegesite = self.site_base_category.newContent(id='siege', portal_type='Category', codification='SIEGE',  vault_type='site')
-    self.agencesite = self.site_base_category.newContent(id='agence', portal_type='Category', codification='AGENCE',  vault_type='site')
-    self.principalesite = self.agencesite.newContent(id='principale', portal_type='Category', codification='PRINCIPALE',  vault_type='site/vault')
-    self.auxisite = self.agencesite.newContent(id='auxiliaire', portal_type='Category', codification='AUXILIAIRE',  vault_type='site/vault')        
-    self.encaisse_billets_et_monnaies = self.testsite.newContent(id='encaisse_des_billets_et_monnaies', portal_type='Category', codification='C1',  vault_type='site/vault')
-    self.encaisse_externe = self.testsite.newContent(id='encaisse_des_externes', portal_type='Category', codification='C1',  vault_type='site/vault')
-    self.encaisse_ventilation = self.testsite.newContent(id='encaisse_des_billets_recus_pour_ventilation', portal_type='Category', codification='C1',  vault_type='site/vault')
-    self.caisse_lille = self.encaisse_ventilation.newContent(id='lille', portal_type='Category', codification='C1',  vault_type='site/vault')
-    self.paris = self.principalesite.newContent(id='paris', portal_type='Category', codification='K00',  vault_type='site/vault')
-
-
-  def openCounterDate(self, date=None):
+    self.paris = self.testsite.newContent(id='paris', portal_type='Category', codification='P1',  vault_type='site')
+    self.madrid = self.testsite.newContent(id='madrid', portal_type='Category', codification='S1',  vault_type='site')
+
+    for c in self.testsite.getCategoryChildValueList():
+      # create bank structure for each agency
+      site = c.getId()
+      # surface
+      surface = c.newContent(id='surface', portal_type='Category', codification='',  vault_type='site/surface')
+      caisse_courante = surface.newContent(id='caisse_courante', portal_type='Category', codification='',  vault_type='site/surface/caisse_courante')
+      caisse_courante.newContent(id='encaisse_des_billets_et_monnaies', portal_type='Category', codification='',  vault_type='site/surface/caisse_courante')
+      # create counter for surface
+      for s in ['banque_interne', 'gros_versement', 'gros_payement']:
+        s = surface.newContent(id='%s' %(s,), portal_type='Category', codification='',  vault_type='site/surface/%s' %(s,))
+        for ss in ['guichet_1', 'guichet_2', 'guichet_3']:
+          ss =  s.newContent(id='%s' %(ss,), portal_type='Category', codification='',  vault_type='site/surface/%s' %(s,))
+      # create sort room
+      salle_de_tri = surface.newContent(id='salle_de_tri', portal_type='Category', codification='',  vault_type='site/surface/salle_de_tri')
+      for ss in ['encaisse_des_billets_et_monnaies', 'encaisse_des_billets_recus_pour_ventilation']:
+        ss =  salle_de_tri.newContent(id='%s' %(ss,), portal_type='Category', codification='',  vault_type='site/surface/salle_de_tri')
+        if 'ventilation' in ss.getId():
+          for country in ['France', 'Spain']:
+            if country[0] != c.getCodification()[0]:
+              ss.newContent(id='%s' %(country,), portal_type='Category', codification='',  vault_type='site/caveau/%s' %(s,))
+      # caveau
+      caveau =  c.newContent(id='caveau', portal_type='Category', codification='',  vault_type='site/caveau')
+      for s in ['auxiliaire', 'reserve', 'externes']:
+        s = caveau.newContent(id='%s' %(s,), portal_type='Category', codification='',  vault_type='site/caveau/%s' %(s,))
+        for ss in ['encaisse_des_billets_et_monnaies', 'encaisse_des_externes', 'encaisse_des_billets_recus_pour_ventilation']:
+          ss =  s.newContent(id='%s' %(ss,), portal_type='Category', codification='',  vault_type='site/caveau/%s' %(s,))
+          if 'ventilation' in ss.getId():
+            for country in ['France', 'Spain']:
+              if country[0] != c.getCodification()[0]:
+                ss.newContent(id='%s' %(country,), portal_type='Category', codification='',  vault_type='site/caveau/%s' %(s,))
+
+
+  def openCounterDate(self, date=None, site=None):
     """
     open a couter date fort the given date
     by default use the current date
     """
     if date is None:
       date = DateTime().Date()
+    if site is None:
+      site = self.testsite
     # create a counter date
     self.counter_date_module = self.getCounterDateModule()
     self.counter_date = self.counter_date_module.newContent(id='counter_date_1', portal_type="Counter Date",
-                                                            site_value = self.testsite,
-                                                            start_date = date)    
+                                                            site_value = site,
+                                                            start_date = date)
     # open the counter date
     self.counter_date.open()
 
@@ -406,7 +433,7 @@ class TestERP5BankingMixin:
                                          portal_type = 'Person',
                                          first_name = first_name,
                                          last_name = last_name)
-        
+
 
   def createBankAccount(self, person, account_id, currency, amount):
     """
@@ -434,7 +461,7 @@ class TestERP5BankingMixin:
                                            inventory=amount)
     self.account_inventory_number += 1
     return bank_account
-    
+
 
   def createCheckbook(self, id, vault, bank_account, min, max, date=None):
     """
@@ -457,9 +484,9 @@ class TestERP5BankingMixin:
     """
     check = checkbook.newContent(id=id,
                                  portal_type = 'Check',
-                                 reference=reference                                
+                                 reference=reference
                                 )
-    
+
     # mark the check as issued
     check.confirm()
     return check
@@ -502,7 +529,7 @@ class TestERP5BankingMixin:
                                  line['resource'],
                                  line['variation_id'],
                                  line['variation_value'],
-                                 line['quantity'],)      
+                                 line['quantity'],)
     return inventory_group
 
 
@@ -549,7 +576,7 @@ class TestERP5BankingMixin:
     Check that all have been create after setup
     """
     # check that Categories were created
-    self.assertEqual(self.encaisse_billets_et_monnaies.getPortalType(), 'Category')
+    self.assertEqual(self.paris.getPortalType(), 'Category')
 
     # check that Resources were created
     # check portal type of billet_10000
@@ -569,7 +596,7 @@ class TestERP5BankingMixin:
     self.assertEqual(self.billet_5000.getPriceCurrency(), 'currency_module/EUR')
     # check years  of billet_5000
     self.assertEqual(self.billet_5000.getVariationList(), ['1992', '2003'])
-    
+
     # check portal type of billet_200
     self.assertEqual(self.billet_200.getPortalType(), 'Banknote')
     # check value of billet_200
-- 
2.30.9