source: products/quintagroup.catalogupdater/trunk/quintagroup/catalogupdater/exportimport/tests/test_catalogupdate.py @ 1761

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

Add tests for overriden existent ZCatalog XMLAdaptor

  • Property svn:eol-style set to native
File size: 3.2 KB
Line 
1import unittest
2#import Testing
3
4#from zope.interface import implements
5from zope.component import getMultiAdapter
6from zope.component import provideUtility
7
8from Products.Five import zcml
9from Products.GenericSetup.interfaces import IBody
10from Products.GenericSetup.ZCatalog.tests import test_exportimport
11
12from Products.GenericSetup.testing import DummyLogger
13from Products.GenericSetup.testing import DummySetupEnviron
14
15from quintagroup.catalogupdater.interfaces import ICatalogUpdater
16
17_CATALOG_BODY = test_exportimport._CATALOG_BODY
18_ZCTEXT_XML = test_exportimport._ZCTEXT_XML
19
20_CATALOG_UPDATE_BODY = """\
21<?xml version="1.0"?>
22<object name="foo_catalog">
23 <object name="foo_vocabulary" remove="True"/>
24 <index name="foo_text" remove="True"/>
25 <index name="foo_text" meta_type="ZCTextIndex">
26  <indexed_attr value="foo_text"/>
27  <extra name="index_type" value="Okapi BM25 Rank"/>
28  <extra name="lexicon_id" value="foo_plexicon"/>
29 </index>
30 <index name="non_existing" remove="True"/>
31 <column value="non_existing" remove="True"/>
32 <column value="bacon" remove="True"/>
33 <column value="eggs" update="True"/>
34 <column value="spam" update="True"/>
35</object>
36"""
37
38
39class DummyCatalogUpdaterUtility:
40    _logger = None
41
42    def updateMetadata4All(self, catalog, columns):
43        self._logger.info("%s:%s" % (catalog.id, columns))
44   
45
46class CatalogUpdaterZCMLLayer(test_exportimport.ZCatalogXMLAdapterTests.layer):
47
48    @classmethod
49    def setUp(cls):
50        # Not import 'configure.zcml' - because it register 'catalog_updater'
51        # utility, which we override with DummyCatalogUpdaterUtility
52        test_exportimport.ZCatalogXMLAdapterTests.layer.setUp()
53        import quintagroup.catalogupdater
54        zcml.load_config('overrides.zcml', quintagroup.catalogupdater)
55
56
57class CatalogUpdaterXMLAdapterTest(test_exportimport.ZCatalogXMLAdapterTests):
58
59    layer = CatalogUpdaterZCMLLayer
60
61    def _getTargetClass(self):
62        from quintagroup.catalogupdater.exportimport.catalogupdater import CatalogUpdaterXMLAdapter
63        return CatalogUpdaterXMLAdapter
64
65    def setUp(self):
66        super(CatalogUpdaterXMLAdapterTest, self).setUp()
67
68        self.logger = DummyLogger('CatalogUpdaterLogger', [])
69        dummy_cu = DummyCatalogUpdaterUtility()
70        dummy_cu._logger = self.logger
71        provideUtility(dummy_cu, ICatalogUpdater, name="catalog_updater")
72
73    def getLastMessage(self):
74        messages = getattr(self.logger, '_messages', [])
75        return messages[-1] or [None,]*3
76
77    def test_body_set_update(self):
78        # Assert that the catalog ends up the way we expect it to.
79        self._populate_special(self._obj)
80        context = DummySetupEnviron()
81        context._should_purge = False
82        adapted = getMultiAdapter((self._obj, context), IBody)
83        adapted.body = _CATALOG_UPDATE_BODY
84        self.assertEqual(adapted.body, _CATALOG_BODY % ('', _ZCTEXT_XML, ''))
85
86        message = self.getLastMessage()
87        self.assertEqual( message[-1], "foo_catalog:['eggs', 'spam']",
88            "Not updated columns in catalog" )
89
90def test_suite():
91    return unittest.TestSuite((
92        unittest.makeSuite(CatalogUpdaterXMLAdapterTest),
93        ))
94
95if __name__ == '__main__':
96    from Products.GenericSetup.testing import run
97    run(test_suite())
Note: See TracBrowser for help on using the repository browser.