source: products/quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testInstallation.py @ 2677

Last change on this file since 2677 was 2600, checked in by liebster, 14 years ago

Add test update catalog during installation package

  • Property svn:eol-style set to native
File size: 5.8 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(news, interface=ISchemaExtender), None)
56
57    def testUpdateCatalog(self):
58        # Test added new columns in catalog
59        Language = 'test_language'
60        gsm_access = 'test_gsm_access'
61        gsm_genres = (u'test_gsm_genres',)
62        gsm_stock = 'test_gsm_stock'
63        cols = ["canonical_link", "Language", "gsm_access",
64                "gsm_genres", "gsm_stock"]
65        lsm = getSiteManager(self.portal)
66        catalog = self.portal.portal_catalog
67        setuptools = self.portal.portal_setup
68        for col in cols:
69            self.assertEqual(col in catalog._catalog.names, True)
70
71        # Test update catalog
72        # Create news
73        news = _createObjectByType('News Item', self.portal, id='test_news')
74        news_cpath = "/my_test_news"
75        news_clink = self.portal.absolute_url() + news_cpath
76
77        # The canonical_link, Language, gsm_access, gsm_genres, gsm_stock
78        # brain must contains not updated canonical_link data
79        brain = catalog(id="test_news")[0]
80        self.assertNotEqual(brain.canonical_link, news_clink)
81        self.assertNotEqual(brain.Language, Language)
82        self.assertNotEqual(brain.gsm_access, gsm_access)
83        self.assertNotEqual(brain.gsm_genres, gsm_genres)
84        self.assertNotEqual(brain.gsm_stock, gsm_stock)
85
86        # Update fields
87        ICanonicalLink(news).canonical_link = news_clink
88        news.update(
89            language=Language, gsm_access=gsm_access,
90            gsm_genres=gsm_genres, gsm_stock=gsm_stock)
91        setuptools.runImportStepFromProfile(
92            'profile-quintagroup.plonegooglesitemaps:default', 'catalog')
93
94        # The canonical_link, Language, gsm_access, gsm_genres, gsm_stock
95        # brain must contains updated canonical_link data
96        brain = catalog(id="test_news")[0]
97        self.assertEqual(brain.canonical_link, news_clink)
98        self.assertEqual(brain.Language, Language)
99        self.assertEqual(brain.gsm_access, gsm_access)
100        self.assertEqual(brain.gsm_genres, gsm_genres)
101        self.assertEqual(brain.gsm_stock, gsm_stock)
102
103
104class TestGoogleSitemapsUninstallation(TestCase):
105
106    def afterSetUp(self):
107        super(TestGoogleSitemapsUninstallation, self).afterSetUp()
108        self.portal.portal_quickinstaller.uninstallProducts(
109            products=['quintagroup.plonegooglesitemaps',])
110        self._refreshSkinData()
111
112    def testNewsSchemaExtenderUnregistered(self):
113        lsm = getSiteManager(self.portal)
114        news = self.portal.invokeFactory("News Item", id="test_news")
115        news = getattr(self.portal, "test_news")
116        self.assertEqual(lsm.queryAdapter(news, interface=ISchemaExtender), None)
117
118    def testConfigletUninstall(self):
119        self.assertNotEqual(self.portal.portal_quickinstaller.isProductInstalled(PRODUCT), True,
120            '%s is already installed' % PRODUCT)
121        configTool = self.portal.portal_controlpanel
122        self.assertEqual('GoogleSitemaps' in [a.getId() for a in configTool.listActions()], False,
123            'Configlet found after uninstallation')
124
125
126def test_suite():
127    from unittest import TestSuite, makeSuite
128    suite = TestSuite()
129    suite.addTest(makeSuite(TestGoogleSitemapsInstallation))
130    suite.addTest(makeSuite(TestGoogleSitemapsUninstallation))
131    return suite
132
133if __name__ == '__main__':
134    unittest.main(defaultTest='test_suite')
135#    framework()
Note: See TracBrowser for help on using the repository browser.