[3163] | 1 | from quintagroup.plonegooglesitemaps.config import SUPPORT_BLAYER |
---|
| 2 | from quintagroup.plonegooglesitemaps.tests.base import TestCase, \ |
---|
| 3 | PRODUCT, IGoogleSitemapsLayer |
---|
| 4 | import unittest |
---|
| 5 | |
---|
[2527] | 6 | from zope.component import getSiteManager |
---|
| 7 | from archetypes.schemaextender.interfaces import ISchemaExtender |
---|
[2600] | 8 | from Products.CMFPlone.utils import _createObjectByType |
---|
| 9 | from quintagroup.canonicalpath.interfaces import ICanonicalLink |
---|
[2527] | 10 | |
---|
[3152] | 11 | |
---|
[2527] | 12 | class TestGoogleSitemapsInstallation(TestCase): |
---|
| 13 | |
---|
| 14 | def testType(self): |
---|
| 15 | pt = self.portal.portal_types |
---|
[3152] | 16 | self.assert_('Sitemap' in pt.objectIds(), |
---|
[3502] | 17 | 'No "Sitemap" type after installation') |
---|
[2527] | 18 | #Test views |
---|
| 19 | views = pt.getTypeInfo('Sitemap').view_methods |
---|
[3152] | 20 | self.assert_('sitemap.xml' in views, |
---|
[3502] | 21 | 'No "sitemap.xml" view for Sitemap type') |
---|
[3152] | 22 | self.assert_('mobile-sitemap.xml' in views, |
---|
[3502] | 23 | 'No "mobile-sitemap.xml" view for Sitemap type') |
---|
[3152] | 24 | self.assert_('news-sitemap.xml' in views, |
---|
[3502] | 25 | 'No "news-sitemap.xml" view for Sitemap type') |
---|
[2527] | 26 | |
---|
| 27 | def testGSMProperties(self): |
---|
| 28 | pp = self.portal.portal_properties |
---|
| 29 | |
---|
| 30 | # Test types_not_searched |
---|
[3502] | 31 | self.assert_("Sitemap" in |
---|
| 32 | pp['site_properties'].getProperty('types_not_searched'), |
---|
| 33 | 'No "Sitemap" added to types not searched ' |
---|
| 34 | 'on installation') |
---|
[2527] | 35 | # Test metaTypesNotToList |
---|
[3502] | 36 | self.assert_("Sitemap" in |
---|
| 37 | pp['navtree_properties']. |
---|
| 38 | getProperty('metaTypesNotToList'), |
---|
| 39 | 'No "Sitemap" added to types not to ' |
---|
| 40 | 'list on installation') |
---|
[2527] | 41 | |
---|
| 42 | # Test 'googlesitemap_properties' |
---|
[3152] | 43 | self.assert_('googlesitemap_properties' in pp.objectIds(), |
---|
[2527] | 44 | 'No "googlesitemap_properties" after installation') |
---|
| 45 | qsmprops = pp['googlesitemap_properties'] |
---|
| 46 | self.assert_(qsmprops.hasProperty('verification_filenames'), |
---|
| 47 | 'No "verification_filenames" property added on installation') |
---|
| 48 | |
---|
| 49 | def testSkins(self): |
---|
| 50 | ps = self.portal.portal_skins |
---|
[3152] | 51 | self.assert_('plonegooglesitemaps' in ps.objectIds(), |
---|
[2527] | 52 | 'No "plonegooglesitemaps" skin layer in portal_skins') |
---|
[3152] | 53 | self.assert_('plonegooglesitemaps' in \ |
---|
| 54 | ps.getSkinPath(ps.getDefaultSkin()), |
---|
[2527] | 55 | 'No "plonegooglesitemaps" skin layer in default skin') |
---|
| 56 | |
---|
| 57 | def testConfiglet(self): |
---|
| 58 | cp = self.portal.portal_controlpanel |
---|
[3152] | 59 | self.assert_([1 for ai in cp.listActionInfos() \ |
---|
| 60 | if ai['id'] == 'GoogleSitemaps'], |
---|
[2527] | 61 | 'No "GoogleSitemaps" configlet added to plone control panel') |
---|
| 62 | |
---|
| 63 | def testNewsSchemaExtenderRegistered(self): |
---|
| 64 | lsm = getSiteManager(self.portal) |
---|
| 65 | news = self.portal.invokeFactory("News Item", id="test_news") |
---|
| 66 | news = getattr(self.portal, "test_news") |
---|
[2747] | 67 | self.assertNotEqual(lsm.queryAdapter( |
---|
| 68 | news, interface=ISchemaExtender, |
---|
[3152] | 69 | name="quintagroup.plonegooglesitemaps.newssitemapextender"), |
---|
| 70 | None) |
---|
[2527] | 71 | |
---|
[2600] | 72 | def testUpdateCatalog(self): |
---|
| 73 | # Test added new columns in catalog |
---|
| 74 | Language = 'test_language' |
---|
| 75 | gsm_access = 'test_gsm_access' |
---|
| 76 | gsm_genres = (u'test_gsm_genres',) |
---|
| 77 | gsm_stock = 'test_gsm_stock' |
---|
| 78 | cols = ["canonical_link", "Language", "gsm_access", |
---|
| 79 | "gsm_genres", "gsm_stock"] |
---|
[3163] | 80 | getSiteManager(self.portal) |
---|
[2600] | 81 | catalog = self.portal.portal_catalog |
---|
| 82 | setuptools = self.portal.portal_setup |
---|
| 83 | for col in cols: |
---|
| 84 | self.assertEqual(col in catalog._catalog.names, True) |
---|
[2527] | 85 | |
---|
[2600] | 86 | # Test update catalog |
---|
| 87 | # Create news |
---|
| 88 | news = _createObjectByType('News Item', self.portal, id='test_news') |
---|
| 89 | news_cpath = "/my_test_news" |
---|
| 90 | news_clink = self.portal.absolute_url() + news_cpath |
---|
| 91 | |
---|
| 92 | # The canonical_link, Language, gsm_access, gsm_genres, gsm_stock |
---|
| 93 | # brain must contains not updated canonical_link data |
---|
| 94 | brain = catalog(id="test_news")[0] |
---|
| 95 | self.assertNotEqual(brain.canonical_link, news_clink) |
---|
| 96 | self.assertNotEqual(brain.Language, Language) |
---|
| 97 | self.assertNotEqual(brain.gsm_access, gsm_access) |
---|
| 98 | self.assertNotEqual(brain.gsm_genres, gsm_genres) |
---|
| 99 | self.assertNotEqual(brain.gsm_stock, gsm_stock) |
---|
| 100 | |
---|
| 101 | # Update fields |
---|
| 102 | ICanonicalLink(news).canonical_link = news_clink |
---|
| 103 | news.update( |
---|
| 104 | language=Language, gsm_access=gsm_access, |
---|
| 105 | gsm_genres=gsm_genres, gsm_stock=gsm_stock) |
---|
| 106 | setuptools.runImportStepFromProfile( |
---|
| 107 | 'profile-quintagroup.plonegooglesitemaps:default', 'catalog') |
---|
| 108 | |
---|
| 109 | # The canonical_link, Language, gsm_access, gsm_genres, gsm_stock |
---|
| 110 | # brain must contains updated canonical_link data |
---|
| 111 | brain = catalog(id="test_news")[0] |
---|
| 112 | self.assertEqual(brain.canonical_link, news_clink) |
---|
| 113 | self.assertEqual(brain.Language, Language) |
---|
| 114 | self.assertEqual(brain.gsm_access, gsm_access) |
---|
| 115 | self.assertEqual(brain.gsm_genres, gsm_genres) |
---|
| 116 | self.assertEqual(brain.gsm_stock, gsm_stock) |
---|
| 117 | |
---|
[2841] | 118 | def test_browser_layer(self): |
---|
| 119 | if not SUPPORT_BLAYER: |
---|
| 120 | return |
---|
[2600] | 121 | |
---|
[2841] | 122 | from plone.browserlayer import utils |
---|
| 123 | self.assert_(IGoogleSitemapsLayer in utils.registered_layers(), |
---|
| 124 | "Not registered 'IGoogleSitemapsLayer' browser layer") |
---|
| 125 | |
---|
| 126 | |
---|
[2527] | 127 | class TestGoogleSitemapsUninstallation(TestCase): |
---|
| 128 | |
---|
| 129 | def afterSetUp(self): |
---|
[2535] | 130 | super(TestGoogleSitemapsUninstallation, self).afterSetUp() |
---|
[2534] | 131 | self.portal.portal_quickinstaller.uninstallProducts( |
---|
[3152] | 132 | products=['quintagroup.plonegooglesitemaps', ]) |
---|
[2527] | 133 | self._refreshSkinData() |
---|
| 134 | |
---|
| 135 | def testNewsSchemaExtenderUnregistered(self): |
---|
| 136 | lsm = getSiteManager(self.portal) |
---|
| 137 | news = self.portal.invokeFactory("News Item", id="test_news") |
---|
| 138 | news = getattr(self.portal, "test_news") |
---|
[3152] | 139 | self.assertEqual(lsm.queryAdapter(news, interface=ISchemaExtender), |
---|
| 140 | None) |
---|
[2527] | 141 | |
---|
[2594] | 142 | def testConfigletUninstall(self): |
---|
[3152] | 143 | self.assertNotEqual( |
---|
| 144 | self.portal.portal_quickinstaller.isProductInstalled(PRODUCT), |
---|
| 145 | True, '%s is already installed' % PRODUCT) |
---|
[2594] | 146 | configTool = self.portal.portal_controlpanel |
---|
[3152] | 147 | self.assertEqual('GoogleSitemaps' in [a.getId() for a in \ |
---|
| 148 | configTool.listActions()], False, |
---|
[2594] | 149 | 'Configlet found after uninstallation') |
---|
[2527] | 150 | |
---|
[2841] | 151 | def test_browserlayer_uninstall(self): |
---|
| 152 | if not SUPPORT_BLAYER: |
---|
| 153 | return |
---|
[2594] | 154 | |
---|
[2841] | 155 | from plone.browserlayer import utils |
---|
[3152] | 156 | self.assertEqual(IGoogleSitemapsLayer in utils.registered_layers(), |
---|
| 157 | False, "Still registered 'IGoogleSitemapsLayer' browser layer") |
---|
[2841] | 158 | |
---|
| 159 | |
---|
[2527] | 160 | def test_suite(): |
---|
[3163] | 161 | suite = unittest.TestSuite() |
---|
| 162 | suite.addTest(unittest.makeSuite(TestGoogleSitemapsInstallation)) |
---|
| 163 | suite.addTest(unittest.makeSuite(TestGoogleSitemapsUninstallation)) |
---|
[2527] | 164 | return suite |
---|
| 165 | |
---|
| 166 | if __name__ == '__main__': |
---|
| 167 | unittest.main(defaultTest='test_suite') |
---|
| 168 | # framework() |
---|