[Erp5-report] r23742 - /erp5/trunk/products/ERP5/tests/testERP5Core.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Sep 22 18:03:45 CEST 2008
Author: jerome
Date: Mon Sep 22 18:03:41 2008
New Revision: 23742
URL: http://svn.erp5.org?rev=23742&view=rev
Log:
tests Folder_delete:
when everything is OK
when a document you want to delete has related documents
when a document you want to delete has related documents you cannot access
(the later is currently failing in Unauthorized)
Modified:
erp5/trunk/products/ERP5/tests/testERP5Core.py
Modified: erp5/trunk/products/ERP5/tests/testERP5Core.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testERP5Core.py?rev=23742&r1=23741&r2=23742&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testERP5Core.py (original)
+++ erp5/trunk/products/ERP5/tests/testERP5Core.py Mon Sep 22 18:03:41 2008
@@ -28,6 +28,7 @@
##############################################################################
import unittest
+import md5
from AccessControl.SecurityManagement import newSecurityManager
from Testing import ZopeTestCase
@@ -64,6 +65,14 @@
self.portal = self.getPortal()
self.portal_id = self.portal.getId()
self.auth = '%s:%s' % (self.manager_username, self.manager_password)
+
+ def beforeTearDown(self):
+ get_transaction().abort()
+ if 'test_folder' in self.portal.objectIds():
+ self.portal.manage_delObjects(['test_folder'])
+ self.portal.portal_selections.setSelectionFor('test_selection', None)
+ get_transaction().commit()
+ self.tic()
def test_01_ERP5Site_createModule(self, quiet=quiet, run=run_all_test):
"""
@@ -290,6 +299,77 @@
response = self.publish('%s/view' % self.portal_id, self.auth)
self.assertEquals(HTTP_OK, response.getStatus())
+ def test_Folder_delete(self):
+ module = self.portal.newContent(portal_type='Folder', id='test_folder')
+ document_1 = module.newContent(portal_type='Folder', id='1')
+ document_2 = module.newContent(portal_type='Folder', id='2')
+ uid_list = [document_1.getUid(), document_2.getUid()]
+ self.portal.portal_selections.setSelectionParamsFor(
+ 'test_selection', dict(uids=uid_list))
+ get_transaction().commit()
+ self.tic()
+ md5_string = md5.new(str(sorted([str(x) for x in uid_list]))).hexdigest()
+ redirect = module.Folder_delete(selection_name='test_selection',
+ uids=uid_list,
+ md5_object_uid_list=md5_string)
+ self.assert_('Deleted.' in redirect, redirect)
+ get_transaction().commit(1)
+ self.assertEquals(len(module.objectValues()), 0)
+
+ def test_Folder_delete_related_object(self):
+ # deletion is refused if there are related objects
+ module = self.portal.newContent(portal_type='Folder', id='test_folder')
+ document_1 = module.newContent(portal_type='Folder', id='1')
+ document_2 = module.newContent(portal_type='Folder', id='2')
+ self.portal.portal_categories.setCategoryMembership(
+ context=document_1,
+ base_category_list=('source',),
+ category_list=document_2.getRelativeUrl())
+ uid_list = [document_1.getUid(), document_2.getUid()]
+ self.portal.portal_selections.setSelectionParamsFor(
+ 'test_selection', dict(uids=uid_list))
+ get_transaction().commit()
+ self.tic()
+ self.assertEquals([document_1],
+ self.portal.portal_categories.getRelatedValueList(document_2))
+ md5_string = md5.new(str(sorted([str(x) for x in uid_list]))).hexdigest()
+ redirect = module.Folder_delete(selection_name='test_selection',
+ uids=uid_list,
+ md5_object_uid_list=md5_string)
+ self.assert_('Sorry, 1 item is in use.' in redirect, redirect)
+ get_transaction().commit(1)
+ self.assertEquals(len(module.objectValues()), 2)
+
+
+ def test_Folder_delete_non_accessible_object(self):
+ # deletion is refused if there are related objects, even if those related
+ # objects cannot be accessed
+ module = self.portal.newContent(portal_type='Folder', id='test_folder')
+ document_1 = module.newContent(portal_type='Folder', id='1')
+ document_2 = module.newContent(portal_type='Folder', id='2')
+ self.portal.portal_categories.setCategoryMembership(
+ context=document_1,
+ base_category_list=('source',),
+ category_list=document_2.getRelativeUrl())
+ uid_list = [document_2.getUid(), ]
+ self.portal.portal_selections.setSelectionParamsFor(
+ 'test_selection', dict(uids=uid_list))
+ get_transaction().commit()
+ self.tic()
+ self.assertEquals([document_1],
+ self.portal.portal_categories.getRelatedValueList(document_2))
+ md5_string = md5.new(str(sorted([str(x) for x in uid_list]))).hexdigest()
+
+ document_1.manage_permission('View', [], acquire=0)
+ document_1.manage_permission('Access contents information', [], acquire=0)
+ redirect = module.Folder_delete(selection_name='test_selection',
+ uids=uid_list,
+ md5_object_uid_list=md5_string)
+ self.assert_('Sorry, 1 item is in use.' in redirect, redirect)
+ get_transaction().commit(1)
+ self.assertEquals(len(module.objectValues()), 2)
+
+
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestERP5Core))
More information about the Erp5-report
mailing list