From a3a62a7bc03cb5ff842622f110eb998761cefaed Mon Sep 17 00:00:00 2001
From: Nicolas Delaby <nicolas@nexedi.com>
Date: Wed, 11 Jun 2008 15:23:43 +0000
Subject: [PATCH] Test that category Accessors are not generated if
 BaseCategory is missing

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@21508 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/CMFCategory/tests/testCMFCategory.py | 39 ++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/product/CMFCategory/tests/testCMFCategory.py b/product/CMFCategory/tests/testCMFCategory.py
index 96bf334ef4..42acb0eb4e 100644
--- a/product/CMFCategory/tests/testCMFCategory.py
+++ b/product/CMFCategory/tests/testCMFCategory.py
@@ -32,6 +32,7 @@ from Testing import ZopeTestCase
 from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
 from AccessControl.SecurityManagement import newSecurityManager
 from AccessControl.SecurityManagement import noSecurityManager
+from Products.ERP5Type.Base import _aq_reset
 from zLOG import LOG
 
 try:
@@ -1087,6 +1088,44 @@ class TestCMFCategory(ERP5TypeTestCase):
       obj = category_tool.resolveCategory('mapping/order/' + relative_url)
       self.assertEquals(obj, value)
 
+  def test_31_assert_raise_if_base_category_is_missing(self):
+    #First remove Base Category
+    self.portal.portal_categories.manage_delObjects(['region'])
+    get_transaction().commit()
+    self.tic()
+    #call _aq_reset to regenerate Accessors
+    _aq_reset()
+    obj = self.portal.person_module.newContent(portal_type='Person')
+    get_transaction().commit()
+    self.tic()
+    try:
+      #Setters
+      self.assertRaises(AttributeError, getattr, obj, 'setRegion')
+      self.assertRaises(AttributeError, getattr, obj, 'setRegionValueList')
+      self.assertRaises(AttributeError, getattr, obj, 'setRegionList')
+      #getters
+      self.assertRaises(AttributeError, getattr, obj, 'getRegion')
+      self.assertRaises(AttributeError, getattr, obj, 'getRegionValueList')
+      self.assertRaises(AttributeError, getattr, obj, 'getRegionList')
+      #Tester
+      self.assertRaises(AttributeError, getattr, obj, 'hasRegion')
+    finally:
+      #add Base Category
+      self.portal.portal_categories.newContent(id='region', portal_type='Base Category')
+    get_transaction().commit()
+    self.tic()
+    #check Method exists after base_category creation
+    #Setters
+    self.assertTrue(getattr(obj, 'setRegion') is not None)
+    self.assertTrue(getattr(obj, 'setRegionValueList') is not None)
+    self.assertTrue(getattr(obj, 'setRegionList') is not None)
+    #getters
+    self.assertTrue(getattr(obj, 'getRegion') is not None)
+    self.assertTrue(getattr(obj, 'getRegionValueList') is not None)
+    self.assertTrue(getattr(obj, 'getRegionList') is not None)
+    #Tester
+    self.assertTrue(getattr(obj, 'hasRegion') is not None)
+
 def test_suite():
   suite = unittest.TestSuite()
   suite.addTest(unittest.makeSuite(TestCMFCategory))
-- 
2.30.9