[Checkins] SVN: Products.CMFCore/branches/2.2/Products/CMFCore/tests/test_CatalogTool.py Backport c115390 and c115392 from trunk

Hanno Schlichting hannosch at hannosch.eu
Sun Aug 8 06:32:58 EDT 2010


Log message for revision 115540:
  Backport c115390 and c115392 from trunk
  

Changed:
  U   Products.CMFCore/branches/2.2/Products/CMFCore/tests/test_CatalogTool.py

-=-
Modified: Products.CMFCore/branches/2.2/Products/CMFCore/tests/test_CatalogTool.py
===================================================================
--- Products.CMFCore/branches/2.2/Products/CMFCore/tests/test_CatalogTool.py	2010-08-08 10:28:04 UTC (rev 115539)
+++ Products.CMFCore/branches/2.2/Products/CMFCore/tests/test_CatalogTool.py	2010-08-08 10:32:58 UTC (rev 115540)
@@ -11,29 +11,28 @@
 #
 ##############################################################################
 """ Unit tests for CatalogTool module.
-
-$Id$
 """
 
 import unittest
 
 from Acquisition import Implicit
 from zope.interface import implements
-from zope.component import getMultiAdapter
 from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.tests.base.dummy import DummyContent
 from Products.CMFCore.interfaces import IIndexableObject
 from Products.CMFCore.interfaces import IContentish
-
 from Products.CMFCore.tests.base.testcase import SecurityTest
 
+
 class FakeFolder(Implicit):
     id = 'portal'
 
+
 class FakeCatalog(Implicit):
     implements(ICatalogTool)
     id = 'portal_catalog'
 
+
 class FakeWorkflowTool(Implicit):
     id = 'portal_workflow'
 
@@ -43,6 +42,7 @@
     def getCatalogVariablesFor(self, ob):
         return self._vars
 
+
 class CatalogDummyContent(DummyContent):
 
     """ Dummy content that already provides IIndexableObject
@@ -52,6 +52,7 @@
     implements(IIndexableObject)
     allowedRolesAndUsers = ['Manager'] # default value
 
+
 class IndexableObjectWrapperTests(unittest.TestCase):
 
     def _getTargetClass(self):
@@ -104,7 +105,6 @@
         self.assertEqual(w.baz, 2)
 
     def test_provided(self):
-        from Products.CMFCore.interfaces import IContentish
         from Products.CMFCore.interfaces import IIndexableObjectWrapper
         from Products.CMFCore.interfaces import IIndexableObject
 
@@ -116,13 +116,13 @@
 
     def test_adapts(self):
         from zope.component import adaptedBy
-        from Products.CMFCore.interfaces import IContentish
         from Products.CMFCore.interfaces import ICatalogTool
 
         w = self._getTargetClass()
-        adapts =  adaptedBy(w) 
+        adapts = adaptedBy(w)
         self.assertEqual(adapts, (IContentish, ICatalogTool))
 
+
 class CatalogToolTests(SecurityTest):
 
     def _getTargetClass(self):
@@ -174,67 +174,77 @@
         tool.addIndex('SearchableText', 'KeywordIndex')
         dummy = self._makeContent(catalog=1)
 
-        tool.catalog_object( dummy, '/dummy' )
-        tool.catalog_object( dummy, '/dummy', [ 'SearchableText' ] )
+        tool.catalog_object(dummy, '/dummy')
+        tool.catalog_object(dummy, '/dummy', ['SearchableText'])
 
     def test_search_anonymous(self):
         catalog = self._makeOne()
         catalog.addIndex('allowedRolesAndUsers', 'KeywordIndex')
+        catalog.addIndex('meta_type', 'FieldIndex')
         dummy = self._makeContent(catalog=1)
         catalog.catalog_object(dummy, '/dummy')
 
-        self.assertEqual(1, len(catalog._catalog.searchResults()))
-        self.assertEqual(0, len(catalog.searchResults()))
+        query = {'meta_type': 'Dummy'}
+        self.assertEqual(1, len(catalog._catalog.searchResults(query)))
+        self.assertEqual(0, len(catalog.searchResults(query)))
 
     def test_search_member_with_valid_roles(self):
         catalog = self._makeOne()
         catalog.addIndex('allowedRolesAndUsers', 'KeywordIndex')
+        catalog.addIndex('meta_type', 'FieldIndex')
         dummy = self._makeContent(catalog=1)
-        dummy.allowedRolesAndUsers = ('Blob',)
+        dummy.allowedRolesAndUsers = ('Blob', )
         catalog.catalog_object(dummy, '/dummy')
 
         self.loginWithRoles('Blob')
 
-        self.assertEqual(1, len(catalog._catalog.searchResults()))
-        self.assertEqual(1, len(catalog.searchResults()))
+        query = {'meta_type': 'Dummy'}
+        self.assertEqual(1, len(catalog._catalog.searchResults(query)))
+        self.assertEqual(1, len(catalog.searchResults(query)))
 
     def test_search_member_with_valid_roles_but_proxy_roles_limit(self):
         catalog = self._makeOne()
         catalog.addIndex('allowedRolesAndUsers', 'KeywordIndex')
+        catalog.addIndex('meta_type', 'FieldIndex')
         dummy = self._makeContent(catalog=1)
-        dummy.allowedRolesAndUsers = ('Blob',)
+        dummy.allowedRolesAndUsers = ('Blob', )
         catalog.catalog_object(dummy, '/dummy')
 
         self.loginWithRoles('Blob')
         self.setupProxyRoles('Waggle')
 
-        self.assertEqual(1, len(catalog._catalog.searchResults()))
-        self.assertEqual(0, len(catalog.searchResults()))
+        query = {'meta_type': 'Dummy'}
+        self.assertEqual(1, len(catalog._catalog.searchResults(query)))
+        self.assertEqual(0, len(catalog.searchResults(query)))
 
     def test_search_member_wo_valid_roles(self):
         catalog = self._makeOne()
         catalog.addIndex('allowedRolesAndUsers', 'KeywordIndex')
+        catalog.addIndex('meta_type', 'FieldIndex')
         dummy = self._makeContent(catalog=1)
-        dummy.allowedRoleAndUsers = ('Blob',)
+        dummy.allowedRoleAndUsers = ('Blob', )
         catalog.catalog_object(dummy, '/dummy')
 
         self.loginWithRoles('Waggle')
 
-        self.assertEqual(1, len(catalog._catalog.searchResults()))
-        self.assertEqual(0, len(catalog.searchResults()))
+        query = {'meta_type': 'Dummy'}
+        self.assertEqual(1, len(catalog._catalog.searchResults(query)))
+        self.assertEqual(0, len(catalog.searchResults(query)))
 
     def test_search_member_wo_valid_roles_but_proxy_roles_allow(self):
         catalog = self._makeOne()
         catalog.addIndex('allowedRolesAndUsers', 'KeywordIndex')
+        catalog.addIndex('meta_type', 'FieldIndex')
         dummy = self._makeContent(catalog=1)
-        dummy.allowedRolesAndUsers = ('Blob',)
+        dummy.allowedRolesAndUsers = ('Blob', )
         catalog.catalog_object(dummy, '/dummy')
 
         self.loginWithRoles('Waggle')
         self.setupProxyRoles('Blob')
 
-        self.assertEqual(1, len(catalog._catalog.searchResults()))
-        self.assertEqual(1, len(catalog.searchResults()))
+        query = {'meta_type': 'Dummy'}
+        self.assertEqual(1, len(catalog._catalog.searchResults(query)))
+        self.assertEqual(1, len(catalog.searchResults(query)))
 
     def test_search_inactive(self):
         from DateTime.DateTime import DateTime
@@ -242,9 +252,10 @@
         catalog.addIndex('allowedRolesAndUsers', 'KeywordIndex')
         catalog.addIndex('effective', 'DateIndex')
         catalog.addIndex('expires', 'DateIndex')
+        catalog.addIndex('meta_type', 'FieldIndex')
         now = DateTime()
         dummy = self._makeContent(catalog=1)
-        dummy.allowedRolesAndUsers = ('Blob',)
+        dummy.allowedRolesAndUsers = ('Blob', )
 
         self.loginWithRoles('Blob')
 
@@ -252,15 +263,16 @@
         dummy.effective = now+1
         dummy.expires = now+2
         catalog.catalog_object(dummy, '/dummy')
-        self.assertEqual(1, len(catalog._catalog.searchResults()))
-        self.assertEqual(0, len(catalog.searchResults()))
+        query = {'meta_type': 'Dummy'}
+        self.assertEqual(1, len(catalog._catalog.searchResults(query)))
+        self.assertEqual(0, len(catalog.searchResults(query)))
 
         # already expired
         dummy.effective = now-2
         dummy.expires = now-1
         catalog.catalog_object(dummy, '/dummy')
-        self.assertEqual(1, len(catalog._catalog.searchResults()))
-        self.assertEqual(0, len(catalog.searchResults()))
+        self.assertEqual(1, len(catalog._catalog.searchResults(query)))
+        self.assertEqual(0, len(catalog.searchResults(query)))
 
     def test_search_restrict_manager(self):
         from DateTime.DateTime import DateTime
@@ -268,6 +280,7 @@
         catalog.addIndex('allowedRolesAndUsers', 'KeywordIndex')
         catalog.addIndex('effective', 'DateIndex')
         catalog.addIndex('expires', 'DateIndex')
+        catalog.addIndex('meta_type', 'FieldIndex')
         now = DateTime()
         dummy = self._makeContent(catalog=1)
 
@@ -277,8 +290,9 @@
         dummy.effective = now-4
         dummy.expires = now-2
         catalog.catalog_object(dummy, '/dummy')
-        self.assertEqual(1, len(catalog._catalog.searchResults()))
-        self.assertEqual(1, len(catalog.searchResults()))
+        query = {'meta_type': 'Dummy'}
+        self.assertEqual(1, len(catalog._catalog.searchResults(query)))
+        self.assertEqual(1, len(catalog.searchResults(query)))
 
         self.assertEqual(1, len(catalog.searchResults(
             expires={'query': now-3, 'range': 'min'})))
@@ -303,9 +317,10 @@
         catalog.addIndex('allowedRolesAndUsers', 'KeywordIndex')
         catalog.addIndex('effective', 'DateIndex')
         catalog.addIndex('expires', 'DateIndex')
+        catalog.addIndex('meta_type', 'FieldIndex')
         now = DateTime()
         dummy = self._makeContent(catalog=1)
-        dummy.allowedRolesAndUsers = ('Blob',)
+        dummy.allowedRolesAndUsers = ('Blob', )
 
         self.loginWithRoles('Blob')
 
@@ -313,9 +328,9 @@
         dummy.effective = now-4
         dummy.expires = now-2
         catalog.catalog_object(dummy, '/dummy')
-        self.assertEqual(1, len(catalog._catalog.searchResults()))
-        self.assertEqual(0, len(catalog.searchResults()))
-
+        query = {'meta_type': 'Dummy'}
+        self.assertEqual(1, len(catalog._catalog.searchResults(query)))
+        self.assertEqual(0, len(catalog.searchResults(query)))
         self.assertEqual(0, len(catalog.searchResults(
             expires={'query': now-3, 'range': 'min'})))
         self.assertEqual(0, len(catalog.searchResults(
@@ -337,9 +352,11 @@
         catalog.addIndex('allowedRolesAndUsers', 'KeywordIndex')
         catalog.addIndex('effective', 'DateIndex')
         catalog.addIndex('expires', 'DateIndex')
+        catalog.addIndex('meta_type', 'FieldIndex')
+
         now = DateTime()
         dummy = self._makeContent(catalog=1)
-        dummy.allowedRolesAndUsers = ('Blob',)
+        dummy.allowedRolesAndUsers = ('Blob', )
 
         self.loginWithRoles('Blob')
 
@@ -347,8 +364,9 @@
         dummy.effective = now-2
         dummy.expires = now+2
         catalog.catalog_object(dummy, '/dummy')
-        self.assertEqual(1, len(catalog._catalog.searchResults()))
-        self.assertEqual(1, len(catalog.searchResults()))
+        query = {'meta_type': 'Dummy'}
+        self.assertEqual(1, len(catalog._catalog.searchResults(query)))
+        self.assertEqual(1, len(catalog.searchResults(query)))
 
         self.assertEqual(0, len(catalog.searchResults(
             effective={'query': now-1, 'range': 'min'})))
@@ -434,9 +452,10 @@
         convert(kw)
         self.assertEqual(kw, {'expires': {'query': 5, 'range': 'max'}})
 
-        kw = {'expires': (5,7), 'expires_usage': 'range:min:max'}
+        kw = {'expires': (5, 7), 'expires_usage': 'range:min:max'}
         convert(kw)
-        self.assertEqual(kw, {'expires': {'query': (5,7), 'range': 'min:max'}})
+        self.assertEqual(kw, {'expires':
+                              {'query': (5, 7), 'range': 'min:max'}})
 
     def test_refreshCatalog(self):
         from Products.CMFCore.tests.base.dummy import DummySite
@@ -444,14 +463,17 @@
         site._setObject('dummy', self._makeContent(catalog=1))
         site._setObject('portal_catalog', self._makeOne())
         ctool = site.portal_catalog
+        ctool.addIndex('meta_type', 'FieldIndex')
         ctool.catalog_object(site.dummy, '/dummy')
 
-        self.assertEqual(1, len(ctool._catalog.searchResults()))
+        query = {'meta_type': 'Dummy'}
+        self.assertEqual(1, len(ctool._catalog.searchResults(query)))
         ctool.refreshCatalog(clear=1)
-        self.assertEqual(1, len(ctool._catalog.searchResults()),
+        length = len(ctool._catalog.searchResults(query))
+        self.assertEqual(1, length,
                          'CMF Collector issue #379 (\'Update Catalog\' '
                          'fails): %s entries after refreshCatalog'
-                         % (len(ctool._catalog.searchResults()),))
+                         % length)
 
     def test_listAllowedRolesAndUsers_proxyroles(self):
         # https://bugs.launchpad.net/zope-cmf/+bug/161729
@@ -476,22 +498,24 @@
         self.failUnless('user:%s' % user.getId() in arus)
 
         # Third case, proxy roles are an empty tuple. This happens if
-        # proxy roles are unset using the ZMI. The behavior should 
+        # proxy roles are unset using the ZMI. The behavior should
         # mirror the first case with no proxy role setting at all.
         self.setupProxyRoles()
         arus = catalog._listAllowedRolesAndUsers(user)
         self.assertEquals(len(arus), 3)
         self.failUnless('Anonymous' in arus)
         self.failUnless('Blob' in arus)
-        self.failUnless('user:%s' % user.getId() in arus)       
+        self.failUnless('user:%s' % user.getId() in arus)
 
     def test_wrapping1(self):
         # DummyContent implements IIndexableObject
         # so should be indexed
         dummy = self._makeContent(catalog=1)
         ctool = self._makeOne()
+        ctool.addIndex('meta_type', 'FieldIndex')
         ctool.catalog_object(dummy, '/dummy')
-        self.assertEqual(1, len(ctool._catalog.searchResults()))
+        query = {'meta_type': 'Dummy'}
+        self.assertEqual(1, len(ctool._catalog.searchResults(query)))
 
     def test_wrapping2(self):
         # DummyContent does not implement IIndexableObject
@@ -499,8 +523,10 @@
         # wrapper class directly
         dummy = DummyContent(catalog=1)
         ctool = self._makeOne()
+        ctool.addIndex('meta_type', 'FieldIndex')
         ctool.catalog_object(dummy, '/dummy')
-        self.assertEqual(1, len(ctool._catalog.searchResults()))
+        query = {'meta_type': 'Dummy'}
+        self.assertEqual(1, len(ctool._catalog.searchResults(query)))
 
     def test_wrapping3(self):
         # DummyContent does not implement IIndexableObject
@@ -511,20 +537,20 @@
 
         from zope.component import getSiteManager
         self.sm = getSiteManager()
-        self.sm.registerAdapter( FakeWrapper
-                               , (IContentish, ICatalogTool)
-                               , IIndexableObject )
+        self.sm.registerAdapter(FakeWrapper,
+                                (IContentish, ICatalogTool),
+                                IIndexableObject)
 
-        dummy =DummyContent(catalog=1)
+        dummy = DummyContent(catalog=1)
         ctool = self._makeOne()
+        ctool.addIndex('meta_type', 'FieldIndex')
         ctool.catalog_object(dummy, '/dummy')
-        self.assertEqual(1, len(ctool._catalog.searchResults()))
+        query = {'meta_type': 'Dummy'}
+        self.assertEqual(1, len(ctool._catalog.searchResults(query)))
 
+
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(IndexableObjectWrapperTests),
         unittest.makeSuite(CatalogToolTests),
         ))
-
-if __name__ == '__main__':
-    unittest.main(defaultTest='test_suite')



More information about the checkins mailing list