[1761] | 1 | import unittest |
---|
| 2 | #import Testing |
---|
| 3 | |
---|
| 4 | #from zope.interface import implements |
---|
| 5 | from zope.component import getMultiAdapter |
---|
| 6 | from zope.component import provideUtility |
---|
| 7 | |
---|
| 8 | from Products.Five import zcml |
---|
| 9 | from Products.GenericSetup.interfaces import IBody |
---|
| 10 | from Products.GenericSetup.ZCatalog.tests import test_exportimport |
---|
| 11 | |
---|
| 12 | from Products.GenericSetup.testing import DummyLogger |
---|
| 13 | from Products.GenericSetup.testing import DummySetupEnviron |
---|
| 14 | |
---|
| 15 | from 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 | |
---|
| 39 | class DummyCatalogUpdaterUtility: |
---|
| 40 | _logger = None |
---|
| 41 | |
---|
| 42 | def updateMetadata4All(self, catalog, columns): |
---|
| 43 | self._logger.info("%s:%s" % (catalog.id, columns)) |
---|
| 44 | |
---|
| 45 | |
---|
| 46 | class 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 | |
---|
| 57 | class 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 | |
---|
| 90 | def test_suite(): |
---|
| 91 | return unittest.TestSuite(( |
---|
| 92 | unittest.makeSuite(CatalogUpdaterXMLAdapterTest), |
---|
| 93 | )) |
---|
| 94 | |
---|
| 95 | if __name__ == '__main__': |
---|
| 96 | from Products.GenericSetup.testing import run |
---|
| 97 | run(test_suite()) |
---|