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
Line 
1import unittest
2
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
9from Testing import ZopeTestCase as ztc
10
11from Products.Five import zcml
12from Products.Five import fiveconfigure
13from Products.CMFCore.utils import getToolByName
14from Products.PloneTestCase import PloneTestCase as ptc
15from Products.PloneTestCase.layer import PloneSite
16from Products.Archetypes.tests.utils import makeContent
17
18from quintagroup.catalogupdater.utility import ICatalogUpdater
19
20class TestCase(ptc.PloneTestCase):
21    class layer(PloneSite):
22        @classmethod
23        def setUp(cls):
24            import quintagroup.catalogupdater
25            fiveconfigure.debug_mode = True
26            zcml.load_config('configure.zcml', quintagroup.catalogupdater)
27            fiveconfigure.debug_mode = False
28
29ptc.setupPloneSite()
30
31
32class TestUtility(TestCase):
33
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()
40
41    def addIndexer(self):
42        @indexer(Interface)
43        def test_column(obj):
44            return obj.id
45
46        provideAdapter(test_column, name='test_column')
47        self.catalog.addColumn('test_column')
48
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)
55
56        cu = queryUtility(ICatalogUpdater, name="catalog_updater")
57        cu.updateMetadata4All(self.catalog, 'test_column')
58
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),
90        ])
91
92if __name__ == '__main__':
93    unittest.main(defaultTest='test_suite')
Note: See TracBrowser for help on using the repository browser.