[Erp5-report] r18775 - /erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Jan 17 16:36:32 CET 2008


Author: yusei
Date: Thu Jan 17 16:36:30 2008
New Revision: 18775

URL: http://svn.erp5.org?rev=18775&view=rev
Log:
Added a ComplexQuery test.

Modified:
    erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py

Modified: erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py?rev=18775&r1=18774&r2=18775&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py (original)
+++ erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py Thu Jan 17 16:36:30 2008
@@ -2088,6 +2088,69 @@
     self.assertEquals(set([doc_with_empty_region_title]),
         searchResults(ignore_empty_string=0, region_title=''))
 
+  def test_complex_query(self, quiet=quiet, run=run_all_test):
+    # Make sure that complex query works on real environment.
+    if not run: return
+
+    catalog = self.getCatalogTool()
+    person_module = self.getPersonModule()
+
+    # Add categories
+    portal_category = self.getCategoryTool()
+    africa = portal_category.region.newContent(id='africa')
+    asia = portal_category.region.newContent(id='asia')
+    europe = portal_category.region.newContent(id='europe')
+
+    # A from Africa
+    person_module.newContent(id='A', first_name='A', last_name='ERP5',
+                             region='africa')
+
+    # B from Asia
+    person_module.newContent(id='B', first_name='B', last_name='ZOPE',
+                             region='asia')
+
+    # C from Europe
+    person_module.newContent(id='C', first_name='C', last_name='PYTHON',
+                             region='europe')
+
+    # D from ????
+    person_module.newContent(id='D', first_name='D', last_name='ERP5')
+
+    get_transaction().commit()
+    self.tic()
+
+    # simple query
+    query = Query(portal_type='Person')
+    self.assertEqual(len(catalog(query=query)), 4)
+
+    # complex query
+    query = ComplexQuery(Query(portal_type='Person'),
+                         Query(region_uid=asia.getUid()),
+                         operator='AND')
+    self.assertEqual(len(catalog(query=query)), 1)
+
+    # complex query
+    query = ComplexQuery(Query(portal_type='Person'),
+                         Query(region_uid=(africa.getUid(), asia.getUid())),
+                         operator='AND')
+    self.assertEqual(len(catalog(query=query)), 2)
+
+    # more complex query
+    query_find_european = ComplexQuery(Query(portal_type='Person'),
+                                       Query(region_uid=europe.getUid()),
+                                       operator='AND')
+    self.assertEqual(len(catalog(query=query_find_european)), 1)
+    
+    query_find_name_erp5 = ComplexQuery(Query(portal_type='Person'),
+                                        Query(title='%ERP5'),
+                                        operator='AND')
+    self.assertEqual(len(catalog(query=query_find_name_erp5)), 2)
+
+    query = ComplexQuery(query_find_european,
+                         query_find_name_erp5,
+                         operator='OR')
+    self.assertEqual(len(catalog(query=query)), 3)
+
 
 def test_suite():
   suite = unittest.TestSuite()




More information about the Erp5-report mailing list