[Erp5-report] r21990 - in /erp5/trunk/products/ERP5/tests: testDomainTool.py testPredicate.py

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Jun 26 18:17:24 CEST 2008


Author: vincent
Date: Thu Jun 26 18:17:18 2008
New Revision: 21990

URL: http://svn.erp5.org?rev=21990&view=rev
Log:
Make testPredicate methods available on testDomainTool (split in 2 classes & make testDomainTool inherit from the MixIn class).
Add a test for searchPredicateList: it must not return predicates which would be possible to filter out from SQL.

Modified:
    erp5/trunk/products/ERP5/tests/testDomainTool.py
    erp5/trunk/products/ERP5/tests/testPredicate.py

Modified: erp5/trunk/products/ERP5/tests/testDomainTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testDomainTool.py?rev=21990&r1=21989&r2=21990&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testDomainTool.py (original)
+++ erp5/trunk/products/ERP5/tests/testDomainTool.py Thu Jun 26 18:17:18 2008
@@ -28,13 +28,13 @@
 
 import unittest
 
-from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
+from Products.ERP5.tests.testPredicate import TestPredicateMixIn, REGION_FRANCE_PATH, REGION_GERMANY_PATH, GROUP_STOREVER_PATH, GROUP_OTHER_PATH
 from DateTime import DateTime
 from AccessControl.SecurityManagement import newSecurityManager
 from zLOG import LOG
 from Products.ZSQLCatalog.SQLCatalog import Query
 
-class TestDomainTool(ERP5TypeTestCase):
+class TestDomainTool(TestPredicateMixIn):
 
   # Different variables used for this test
   run_all_test = 1
@@ -47,12 +47,6 @@
     """
     return "Domain Tool"
 
-  def enableHotReindexing(self):
-    """
-    You can override this. Return if we should create (1) or not (0) an activity tool
-    """
-    return 0
-
   def getBusinessTemplateList(self):
     """
       Return the list of business templates.
@@ -65,15 +59,6 @@
 
   def getResourceModule(self):
     return getattr(self.getPortal(), self.resource_module, None)
-
-  def afterSetUp(self):
-    self.login()
-
-  def login(self, quiet=0):
-    uf = self.getPortal().acl_users
-    uf._doAddUser('seb', '', ['Manager'], [])
-    user = uf.getUserById('seb').__of__(uf)
-    newSecurityManager(None, user)
 
   def getSaleOrderModule(self):
     return getattr(self.getPortal(),'sale_order_module',None)
@@ -410,6 +395,28 @@
                      'variation/%s/blue' % self.resource.getRelativeUrl()]),
                      sort_method=sort_method),45)
 
+  def test_06_SQLQueryDoesNotReturnTooManyPredicates(self, quiet=0, run=run_all_test):
+    if not run: return
+    if not quiet:
+      self.logMessage('Check that SQL query does not return unneeded predicates')
+    predicate_both_match = self.createPredicate(
+        multimembership_criterion_base_category_list=['group', 'region'],
+        membership_criterion_category_list=[GROUP_STOREVER_PATH, REGION_FRANCE_PATH])
+    predicate_one_match = self.createPredicate(
+        multimembership_criterion_base_category_list=['group', 'region'],
+        membership_criterion_category_list=[GROUP_STOREVER_PATH, REGION_GERMANY_PATH])
+    document = self.createDocument(group='nexedi/storever',
+                                   region='europe/western_europe/france')
+    get_transaction().commit()
+    self.tic()
+    portal_domains = self.getPortalObject().portal_domains
+    # Basic sanity checks
+    self.assertTrue(predicate_both_match.test(document))
+    self.assertFalse(predicate_one_match.test(document))
+    self.assertSameSet(portal_domains.searchPredicateList(document, test=1), [predicate_both_match])
+    # Real test
+    self.assertSameSet(portal_domains.searchPredicateList(document, test=0), [predicate_both_match])
+
 def test_suite():
   suite = unittest.TestSuite()
   suite.addTest(unittest.makeSuite(TestDomainTool))

Modified: erp5/trunk/products/ERP5/tests/testPredicate.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testPredicate.py?rev=21990&r1=21989&r2=21990&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testPredicate.py (original)
+++ erp5/trunk/products/ERP5/tests/testPredicate.py Thu Jun 26 18:17:18 2008
@@ -48,7 +48,7 @@
 QUIET = 1
 PREDICATE_FOLDER_NAME = "predicate_unit_test_folder"
 
-class TestPredicates(ERP5TypeTestCase):
+class TestPredicateMixIn(ERP5TypeTestCase):
   """Test Predicates. """
   
   def getTitle(self):
@@ -264,6 +264,8 @@
     predicate = sequence.get('predicate')
     self.assertFalse(predicate.test(doc))
 
+class TestPredicates(TestPredicateMixIn):
+
   ############################################################################
   ## Test Methods ############################################################
   ############################################################################




More information about the Erp5-report mailing list