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

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

Added tests for utility

  • Property svn:eol-style set to native
File size: 3.3 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
[1753]49    def testMetadataUpdate(self):
50        """ Test is metadata column updated with utility
51        """
52        docs = self.catalog.unrestrictedSearchResults(portal_type='Document')
53        self.assertTrue([1 for b in docs if b.test_column == b.id] == [],
54            "Some document has updated 'test_column' metadata in catalog: '%s'" % docs)
[1739]55
[1753]56        cu = queryUtility(ICatalogUpdater, name="catalog_updater")
57        cu.updateMetadata4All(self.catalog, 'test_column')
[1739]58
[1753]59        docs = self.catalog.unrestrictedSearchResults(portal_type='Document')
60        self.assertTrue([1 for b in docs if b.test_column != b.id] == [],
61            "Some document has wrong 'test_column' metadata in catalog: '%s'" % docs)
62
63    def testOnlyOneColumnUpdate(self):
64        """ Update a title property for the my_doc object (without reindexing)
65            then, after utility usage - check is that metadata is leave unchanged.
66        """
67        self.loginAsPortalOwner()
68        self.my_doc.update(title="My document")
69        self.logout()
70
71        mydoc = self.catalog.unrestrictedSearchResults(id='my_doc')[0]
72        self.assertTrue(mydoc.Title == "My document", mydoc.Title)
73
74        self.my_doc.setTitle('New my document') # catalog not updated
75        cu = queryUtility(ICatalogUpdater, name="catalog_updater")
76        cu.updateMetadata4All(self.catalog, 'test_column')
77
78        mydoc = self.catalog.unrestrictedSearchResults(id='my_doc')[0]
79        self.assertTrue(mydoc.Title == 'My document',
80            "Other metadata updated: Title='%s'" % mydoc.Title)
81
82        self.assertTrue(mydoc.test_column == 'my_doc',
83            "Wrong data in updated metadata: test_column='%s', " \
84            "must be 'my_doc'" % mydoc.test_column)
85
86
87def test_suite():
88    return unittest.TestSuite([
89        unittest.makeSuite(TestUtility),
[1739]90        ])
91
92if __name__ == '__main__':
93    unittest.main(defaultTest='test_suite')
Note: See TracBrowser for help on using the repository browser.