source: products/quintagroup.plonegooglesitemaps/branches/sitemap_date/quintagroup/plonegooglesitemaps/tests/testInstallation.py @ 3502

Last change on this file since 3502 was 3502, checked in by potar, 12 years ago

fixed pep8

  • Property svn:eol-style set to native
File size: 6.8 KB
Line 
1from quintagroup.plonegooglesitemaps.config import SUPPORT_BLAYER
2from quintagroup.plonegooglesitemaps.tests.base import TestCase, \
3    PRODUCT, IGoogleSitemapsLayer
4import unittest
5
6from zope.component import getSiteManager
7from archetypes.schemaextender.interfaces import ISchemaExtender
8from Products.CMFPlone.utils import _createObjectByType
9from quintagroup.canonicalpath.interfaces import ICanonicalLink
10
11
12class 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 installation')
48
49    def testSkins(self):
50        ps = self.portal.portal_skins
51        self.assert_('plonegooglesitemaps' in ps.objectIds(),
52            'No "plonegooglesitemaps" skin layer in portal_skins')
53        self.assert_('plonegooglesitemaps' in \
54                     ps.getSkinPath(ps.getDefaultSkin()),
55            'No "plonegooglesitemaps" skin layer in default skin')
56
57    def testConfiglet(self):
58        cp = self.portal.portal_controlpanel
59        self.assert_([1 for ai in cp.listActionInfos() \
60                      if ai['id'] == 'GoogleSitemaps'],
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")
67        self.assertNotEqual(lsm.queryAdapter(
68                news, interface=ISchemaExtender,
69                name="quintagroup.plonegooglesitemaps.newssitemapextender"),
70            None)
71
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"]
80        getSiteManager(self.portal)
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)
85
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
118    def test_browser_layer(self):
119        if not SUPPORT_BLAYER:
120            return
121
122        from plone.browserlayer import utils
123        self.assert_(IGoogleSitemapsLayer in utils.registered_layers(),
124                     "Not registered 'IGoogleSitemapsLayer' browser layer")
125
126
127class TestGoogleSitemapsUninstallation(TestCase):
128
129    def afterSetUp(self):
130        super(TestGoogleSitemapsUninstallation, self).afterSetUp()
131        self.portal.portal_quickinstaller.uninstallProducts(
132            products=['quintagroup.plonegooglesitemaps', ])
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")
139        self.assertEqual(lsm.queryAdapter(news, interface=ISchemaExtender),
140            None)
141
142    def testConfigletUninstall(self):
143        self.assertNotEqual(
144            self.portal.portal_quickinstaller.isProductInstalled(PRODUCT),
145            True, '%s is already installed' % PRODUCT)
146        configTool = self.portal.portal_controlpanel
147        self.assertEqual('GoogleSitemaps' in [a.getId() for a in \
148                                              configTool.listActions()], False,
149            'Configlet found after uninstallation')
150
151    def test_browserlayer_uninstall(self):
152        if not SUPPORT_BLAYER:
153            return
154
155        from plone.browserlayer import utils
156        self.assertEqual(IGoogleSitemapsLayer in utils.registered_layers(),
157            False, "Still registered 'IGoogleSitemapsLayer' browser layer")
158
159
160def test_suite():
161    suite = unittest.TestSuite()
162    suite.addTest(unittest.makeSuite(TestGoogleSitemapsInstallation))
163    suite.addTest(unittest.makeSuite(TestGoogleSitemapsUninstallation))
164    return suite
165
166if __name__ == '__main__':
167    unittest.main(defaultTest='test_suite')
168#    framework()
Note: See TracBrowser for help on using the repository browser.