From 598ca32ba7a630b14be30d9b3b85252cb66038d8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Calonne?= <aurel@nexedi.com>
Date: Wed, 14 Dec 2005 08:37:28 +0000
Subject: [PATCH] add test to check if we don't delete subobjects at upgrade of
 parents object and if trash bins are created

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@4643 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/tests/testBusinessTemplate.py | 91 ++++++++++++++++++++--
 1 file changed, 85 insertions(+), 6 deletions(-)

diff --git a/product/ERP5/tests/testBusinessTemplate.py b/product/ERP5/tests/testBusinessTemplate.py
index 0f9a46c0b6..7431e544c2 100755
--- a/product/ERP5/tests/testBusinessTemplate.py
+++ b/product/ERP5/tests/testBusinessTemplate.py
@@ -303,9 +303,7 @@ class TestBusinessTemplate(ERP5TypeTestCase):
       Create new base category.
     """
     category_tool = self.getCategoryTool()
-    new_base_category_id = "fake_base_category"
-    new_base_category = category_tool.newContent(portal_type="Base Category",
-                                                 id=new_base_category_id)
+    new_base_category = category_tool.newContent(portal_type="Base Category",)
     sequence.edit(new_base_category=new_base_category)
 
   def stepEditNewBT(self, sequence=None, sequence_list=None, **kw):
@@ -327,6 +325,32 @@ class TestBusinessTemplate(ERP5TypeTestCase):
     new_bt.edit(template_base_category_list=base_category_id_list)
     sequence.edit(installed_base_cat_id=new_base_category.getId())
 
+  def stepAddCategoryToBaseCategory(self, sequence=None,
+                                    sequence_list=None, **kw):
+    """
+    Add a category to a base category
+    """
+    subcategory_id = "fake subcategory"
+    new_base_category = sequence.get('new_base_category')
+#     portal_categories = self.getCategoryTool()
+#     base_category = portal_categories._getOb('fake_base_category')
+    LOG('new_base_catory', 0, new_base_category)
+    subcategory = new_base_category.newContent(portal_type="Category",
+                                           id=subcategory_id)
+    sequence.edit(subcategory_id=subcategory.getId())
+
+  def stepCheckIfSubCategoryExists(self, sequence=None,
+                                  sequence_list=None, **kw):
+    """
+    Check if subcategory still exists
+    """
+    base_category_id = sequence.get('installed_base_cat_id')
+    LOG("base_cat_id", 0, base_category_id)
+    portal_categories = self.getCategoryTool()
+    base_category = portal_categories._getOb(base_category_id)
+    subcategory_id = sequence.get('subcategory_id')
+    self.failUnless(subcategory_id in base_category.contentIds())
+
   def stepCheckModifiedBuildingState(self, sequence=None, 
                                      sequence_list=None, **kw):
     """
@@ -435,7 +459,9 @@ class TestBusinessTemplate(ERP5TypeTestCase):
     Check if a base category is installed.
     """
     base_category_id = sequence.get('installed_base_cat_id')
+    LOG('base_category_id', 0, base_category_id)
     portal_categories = self.getCategoryTool()
+    LOG("category list", 0, portal_categories.contentIds())
     self.failUnless(base_category_id in portal_categories.contentIds())
 
   def stepCheckIfBaseCategoryIsNotInstalled(self, sequence=None, 
@@ -447,6 +473,24 @@ class TestBusinessTemplate(ERP5TypeTestCase):
     portal_categories = self.getCategoryTool()
     self.failIf(base_category_id in portal_categories.contentIds())
 
+  def stepCheckIfTrashBinExists(self, sequence=None, sequence_list=None, **kw):
+    """
+    Check If we create a trash bin at upgrade
+    """
+    new_bt = sequence.get('new_bt')
+    self.failUnless(len(new_bt.portal_trash.objectIds()) == 1)
+
+  def stepRemoveAllTrashBins(self, sequence=None, sequence_list=None, **kw):
+    """
+    Remove all previous trash bins generated
+    """
+    current_bt = sequence.get('current_bt')
+    trash = current_bt.getPortalObject().portal_trash
+    trash_ids = trash.objectIds()
+    for id in list(trash_ids):
+        trash.deleteContent(id)    
+    self.failIf(len(trash.objectIds()) > 0)
+    
   def test_03_update(self, quiet=0, run=run_all_test):
     """
     Update BT
@@ -547,7 +591,7 @@ class TestBusinessTemplate(ERP5TypeTestCase):
                       Tic \
                       InstallNewBT \
                       CheckNoEmptyDiff \
-                      CheckIfBaseCategoryIsNotInstalled \
+                      CheckIfBaseCategoryIsInstalled \
                       SwitchBT \
                       '
     sequence_list.addSequenceString(sequence_string)
@@ -556,12 +600,11 @@ class TestBusinessTemplate(ERP5TypeTestCase):
   def test_07_installWithoutExport(self, quiet=0, run=run_all_test):
     """
     Built, install
-    XXX Why some XML is created only with export ? (as workflow chain)
     Check the diff
     """
     if not run: return
     if not quiet:
-      message = 'Test Buid and Update without export'
+      message = 'Test Build and Update without export'
       ZopeTestCase._print('\n%s ' % message)
       LOG('Testing... ', 0, message)
     sequence_list = SequenceList()
@@ -579,6 +622,42 @@ class TestBusinessTemplate(ERP5TypeTestCase):
     sequence_list.addSequenceString(sequence_string)
     sequence_list.play(self)
 
+
+  def test_08_checkNoSubobjectsUninstall(self, quiet=0, run=run_all_test):
+    """
+    Test if we don't remove subobjects when upgrading a
+    business tempalte
+    """
+    if not run: return
+    if not quiet:
+      message = 'Test if subobjects remains after upgrade'
+      ZopeTestCase._print('\n%s ' % message)
+      LOG('Testing... ', 0, message)
+    sequence_list = SequenceList()
+    sequence_string = '\
+                      GetCurrentBusinessTemplate \
+                      RemoveAllTrashBins \
+                      CopyBusinessTemplate \
+                      CreateNewBaseCategory \
+                      AddCategoryToBaseCategory \
+                      AddNewBaseCategoryToNewBT \
+                      EditNewBT \
+                      BuildNewBT \
+                      CheckBuiltBuildingState \
+                      ExportNewBT \
+                      ImportNewBT \
+                      Tic \
+                      InstallNewBT \
+                      CheckNoEmptyDiff \
+                      CheckIfBaseCategoryIsInstalled \
+                      CheckIfSubCategoryExists \
+                      CheckIfTrashBinExists \
+                      SwitchBT \
+                      '
+    sequence_list.addSequenceString(sequence_string)
+    sequence_list.play(self)    
+
+
 if __name__ == '__main__':
     framework()
 else:
-- 
2.30.9