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