source: products/quintagroup.catalogupdater/trunk/quintagroup/catalogupdater/tests.py @ 1760

Last change on this file since 1760 was 1758, checked in by mylan, 14 years ago

Added test of updating ALL records

  • Property svn:eol-style set to native
File size: 3.7 KB
RevLine 
[1739]1import unittest
2
[1753]3from zope.interface import Interface
4from zope.component import queryUtility
5from zope.component import provideAdapter
6
7from plone.indexer.decorator import indexer
8from plone.indexer.interfaces import IIndexableObject
[1739]9from Testing import ZopeTestCase as ztc
10
11from Products.Five import zcml
12from Products.Five import fiveconfigure
[1753]13from Products.CMFCore.utils import getToolByName
[1739]14from Products.PloneTestCase import PloneTestCase as ptc
15from Products.PloneTestCase.layer import PloneSite
[1753]16from Products.Archetypes.tests.utils import makeContent
[1739]17
[1753]18from quintagroup.catalogupdater.utility import ICatalogUpdater
[1739]19
20class TestCase(ptc.PloneTestCase):
21    class layer(PloneSite):
22        @classmethod
23        def setUp(cls):
[1753]24            import quintagroup.catalogupdater
[1739]25            fiveconfigure.debug_mode = True
[1753]26            zcml.load_config('configure.zcml', quintagroup.catalogupdater)
[1739]27            fiveconfigure.debug_mode = False
28
[1753]29ptc.setupPloneSite()
[1739]30
31
[1753]32class TestUtility(TestCase):
[1739]33
[1753]34    def afterSetUp(self):
35        self.loginAsPortalOwner()
36        self.my_doc = makeContent(self.portal, portal_type='Document', id='my_doc')
37        self.catalog = getToolByName(self.portal, 'portal_catalog')
38        self.logout()
39        self.addIndexer()
[1739]40
[1753]41    def addIndexer(self):
42        @indexer(Interface)
43        def test_column(obj):
44            return obj.id
[1739]45
[1753]46        provideAdapter(test_column, name='test_column')
47        self.catalog.addColumn('test_column')
[1739]48
[1756]49    def testSingleColumnUpdate(self):
[1753]50        """ Test is metadata column updated with utility
51        """
[1756]52        mydoc = self.catalog.unrestrictedSearchResults(id='my_doc')[0]
53        self.assertFalse(mydoc.test_column == 'my_doc',
54            "'test_column' metadata updated in catalog " \
55            "before utility call: '%s'" % mydoc.test_column)
[1739]56
[1753]57        cu = queryUtility(ICatalogUpdater, name="catalog_updater")
58        cu.updateMetadata4All(self.catalog, 'test_column')
[1739]59
[1756]60        mydoc = self.catalog.unrestrictedSearchResults(id='my_doc')[0]
61        self.assertTrue(mydoc.test_column == 'my_doc',
62            "'test_column' metadata has wrong metadata in catalog: " \
63            "'%s'" % mydoc.test_column)
[1753]64
[1756]65    def testOnlyPointedColumnUpdate(self):
66        """ Update a title property for the my_doc object
67            (without reindexing) then, after utility usage
68            - check is that metadata is leave unchanged.
[1753]69        """
70        self.loginAsPortalOwner()
71        self.my_doc.update(title="My document")
72        self.logout()
73
74        mydoc = self.catalog.unrestrictedSearchResults(id='my_doc')[0]
75        self.assertTrue(mydoc.Title == "My document", mydoc.Title)
76
77        self.my_doc.setTitle('New my document') # catalog not updated
78        cu = queryUtility(ICatalogUpdater, name="catalog_updater")
79        cu.updateMetadata4All(self.catalog, 'test_column')
80
81        mydoc = self.catalog.unrestrictedSearchResults(id='my_doc')[0]
82        self.assertTrue(mydoc.Title == 'My document',
83            "Other metadata updated: Title='%s'" % mydoc.Title)
84
85
[1757]86    def testAllRecordsUpdate(self):
87        """ Test is all records in catalog updated with utility
88        """
[1758]89        cu = queryUtility(ICatalogUpdater, name="catalog_updater")
90        cu.updateMetadata4All(self.catalog, 'test_column')
[1753]91
[1758]92        num_recs = len(self.catalog._catalog.data)
93        allcat = self.catalog.unrestrictedSearchResults(path='/')
94        num_updated = sum([1 for b in allcat if b.test_column==b.id])
[1757]95
[1758]96        self.assertTrue(num_updated == num_recs, "Only %d records updated, " \
97            "must be - %d" % (num_updated, num_recs))
[1757]98
99
[1753]100def test_suite():
101    return unittest.TestSuite([
102        unittest.makeSuite(TestUtility),
[1739]103        ])
104
105if __name__ == '__main__':
106    unittest.main(defaultTest='test_suite')
Note: See TracBrowser for help on using the repository browser.