source: products/quintagroup.plonegooglesitemaps/tags/1.5.6/quintagroup/plonegooglesitemaps/tests/testInstallation.py @ 3665

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

Added support of migration from qPloneGoogleSitemaps product
to quintagroup.plonegooglesitemaps with tests.
Also all views now registered on own browserlayer.

Merged revisions 3865,3867-3872,3874-3878 via svnmerge from
http://svn.quintagroup.com/products/quintagroup.plonegooglesitemaps/branches/migratioin_product

........

r3865 | mylan | 2010-09-15 20:54:50 +0300 (Wed, 15 Sep 2010) | 1 line


#230: Added module aliases - prevent breakage sitemap, created with qPloneGoogleSitemaps

........

r3867 | mylan | 2010-09-17 11:41:35 +0300 (Fri, 17 Sep 2010) | 1 line


#230: Added browserlayer and registered all sitemaps views and configlet view to it

........

r3868 | mylan | 2010-09-17 13:12:09 +0300 (Fri, 17 Sep 2010) | 1 line


#230: remove module aliases

........

r3869 | mylan | 2010-09-17 13:13:14 +0300 (Fri, 17 Sep 2010) | 1 line


#230: Added migration from qPloneGoogleSitemaps to quintagroup.plonegooglesitemaps

........

r3870 | mylan | 2010-09-17 14:02:47 +0300 (Fri, 17 Sep 2010) | 1 line


#230: Added upgrade/migration step by step reference.

........

r3871 | mylan | 2010-09-17 14:41:04 +0300 (Fri, 17 Sep 2010) | 1 line


#230: Fix tests after registering all views to the browser layer

........

r3872 | mylan | 2010-09-17 14:55:43 +0300 (Fri, 17 Sep 2010) | 1 line


#230: Added uninstallation browserlayer and updated install/uninstall tests

........

r3874 | mylan | 2010-09-20 13:12:26 +0300 (Mon, 20 Sep 2010) | 1 line


#230: Added test for browser layer uninstallation

........

r3875 | mylan | 2010-09-20 15:37:00 +0300 (Mon, 20 Sep 2010) | 1 line


#230: Fix cleanup during migration from the qPloneGoogleSitemaps

........

r3876 | mylan | 2010-09-20 15:38:18 +0300 (Mon, 20 Sep 2010) | 1 line


#230: Fix typos in GS profile and import step

........

r3877 | mylan | 2010-09-20 18:23:20 +0300 (Mon, 20 Sep 2010) | 1 line


#230: Added tests of migration from qPloneGoogleSitemap to quintagroup.plonegooglesitemap.

........

r3878 | mylan | 2010-09-22 14:17:07 +0300 (Wed, 22 Sep 2010) | 1 line


#230: some upgrade tests reorganization

........

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