source: products/quintagroup.plonegooglesitemaps/branches/migratioin_product/quintagroup/plonegooglesitemaps/tests/testInstallation.py @ 2826

Last change on this file since 2826 was 2747, checked in by mylan, 14 years ago

#227: Updated test because of add name to INewsSitemapProvider schemaextender adapter

  • Property svn:eol-style set to native
File size: 5.9 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
106class TestGoogleSitemapsUninstallation(TestCase):
107
108    def afterSetUp(self):
109        super(TestGoogleSitemapsUninstallation, self).afterSetUp()
110        self.portal.portal_quickinstaller.uninstallProducts(
111            products=['quintagroup.plonegooglesitemaps',])
112        self._refreshSkinData()
113
114    def testNewsSchemaExtenderUnregistered(self):
115        lsm = getSiteManager(self.portal)
116        news = self.portal.invokeFactory("News Item", id="test_news")
117        news = getattr(self.portal, "test_news")
118        self.assertEqual(lsm.queryAdapter(news, interface=ISchemaExtender), None)
119
120    def testConfigletUninstall(self):
121        self.assertNotEqual(self.portal.portal_quickinstaller.isProductInstalled(PRODUCT), True,
122            '%s is already installed' % PRODUCT)
123        configTool = self.portal.portal_controlpanel
124        self.assertEqual('GoogleSitemaps' in [a.getId() for a in configTool.listActions()], False,
125            'Configlet found after uninstallation')
126
127
128def test_suite():
129    from unittest import TestSuite, makeSuite
130    suite = TestSuite()
131    suite.addTest(makeSuite(TestGoogleSitemapsInstallation))
132    suite.addTest(makeSuite(TestGoogleSitemapsUninstallation))
133    return suite
134
135if __name__ == '__main__':
136    unittest.main(defaultTest='test_suite')
137#    framework()
Note: See TracBrowser for help on using the repository browser.