Changeset 1753 in products for quintagroup.catalogupdater


Ignore:
Timestamp:
Feb 16, 2010 2:46:05 PM (14 years ago)
Author:
mylan
Message:

Added tests for utility

File:
1 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.catalogupdater/trunk/quintagroup/catalogupdater/tests.py

    r1739 r1753  
    11import unittest 
    22 
    3 from zope.testing import doctestunit 
    4 from zope.component import testing 
     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 
    59from Testing import ZopeTestCase as ztc 
    610 
    711from Products.Five import zcml 
    812from Products.Five import fiveconfigure 
     13from Products.CMFCore.utils import getToolByName 
    914from Products.PloneTestCase import PloneTestCase as ptc 
    1015from Products.PloneTestCase.layer import PloneSite 
    11 ptc.setupPloneSite() 
     16from Products.Archetypes.tests.utils import makeContent 
    1217 
    13 import quintagroup.catalogupdater 
     18from quintagroup.catalogupdater.utility import ICatalogUpdater 
    1419 
    1520class TestCase(ptc.PloneTestCase): 
     
    1722        @classmethod 
    1823        def setUp(cls): 
     24            import quintagroup.catalogupdater 
    1925            fiveconfigure.debug_mode = True 
    20             zcml.load_config('configure.zcml', 
    21                              quintagroup.catalogupdater) 
     26            zcml.load_config('configure.zcml', quintagroup.catalogupdater) 
    2227            fiveconfigure.debug_mode = False 
    2328 
    24         @classmethod 
    25         def tearDown(cls): 
    26             pass 
     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) 
    2785 
    2886 
    2987def test_suite(): 
    3088    return unittest.TestSuite([ 
    31  
    32         # Unit tests 
    33         #doctestunit.DocFileSuite( 
    34         #    'README.txt', package='quintagroup.catalogupdater', 
    35         #    setUp=testing.setUp, tearDown=testing.tearDown), 
    36  
    37         #doctestunit.DocTestSuite( 
    38         #    module='quintagroup.catalogupdater.mymodule', 
    39         #    setUp=testing.setUp, tearDown=testing.tearDown), 
    40  
    41  
    42         # Integration tests that use PloneTestCase 
    43         #ztc.ZopeDocFileSuite( 
    44         #    'README.txt', package='quintagroup.catalogupdater', 
    45         #    test_class=TestCase), 
    46  
    47         #ztc.FunctionalDocFileSuite( 
    48         #    'browser.txt', package='quintagroup.catalogupdater', 
    49         #    test_class=TestCase), 
    50  
     89        unittest.makeSuite(TestUtility), 
    5190        ]) 
    5291 
Note: See TracChangeset for help on using the changeset viewer.