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

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

Merged sitemap_date branch into trunk

  • Property svn:eol-style set to native
File size: 7.2 KB
RevLine 
[3163]1from quintagroup.plonegooglesitemaps.config import SUPPORT_BLAYER
2from quintagroup.plonegooglesitemaps.tests.base import TestCase, \
3    PRODUCT, IGoogleSitemapsLayer
4import unittest
5
[2527]6from zope.component import getSiteManager
7from archetypes.schemaextender.interfaces import ISchemaExtender
[2600]8from Products.CMFPlone.utils import _createObjectByType
9from quintagroup.canonicalpath.interfaces import ICanonicalLink
[2527]10
[3152]11
[2527]12class TestGoogleSitemapsInstallation(TestCase):
13
14    def testType(self):
15        pt = self.portal.portal_types
[3152]16        self.assert_('Sitemap' in pt.objectIds(),
[3510]17                     'No "Sitemap" type after installation')
[2527]18        #Test views
19        views = pt.getTypeInfo('Sitemap').view_methods
[3152]20        self.assert_('sitemap.xml' in views,
[3510]21                     'No "sitemap.xml" view for Sitemap type')
[3152]22        self.assert_('mobile-sitemap.xml' in views,
[3510]23                     'No "mobile-sitemap.xml" view for Sitemap type')
[3152]24        self.assert_('news-sitemap.xml' in views,
[3510]25                     'No "news-sitemap.xml" view for Sitemap type')
[2527]26
27    def testGSMProperties(self):
28        pp = self.portal.portal_properties
29
30        # Test types_not_searched
[3510]31        self.assert_("Sitemap" in
32                     pp['site_properties'].getProperty('types_not_searched'),
33                     'No "Sitemap" added to types not searched '
34                     'on installation')
[2527]35        # Test metaTypesNotToList
[3510]36        self.assert_("Sitemap" in
37                     pp['navtree_properties'].
38                     getProperty('metaTypesNotToList'),
39                     'No "Sitemap" added to types not to '
40                     'list on installation')
[2527]41
42        # Test 'googlesitemap_properties'
[3152]43        self.assert_('googlesitemap_properties' in pp.objectIds(),
[3510]44                     'No "googlesitemap_properties" after installation')
[2527]45        qsmprops = pp['googlesitemap_properties']
46        self.assert_(qsmprops.hasProperty('verification_filenames'),
[3510]47                     'No "verification_filenames" property added on '
48                     'installation')
[2527]49
50    def testSkins(self):
51        ps = self.portal.portal_skins
[3152]52        self.assert_('plonegooglesitemaps' in ps.objectIds(),
[3510]53                     'No "plonegooglesitemaps" skin '
54                     'layer in portal_skins')
55        self.assert_('plonegooglesitemaps' in
[3152]56                     ps.getSkinPath(ps.getDefaultSkin()),
[3510]57                     'No "plonegooglesitemaps" skin layer '
58                     'in default skin')
[2527]59
60    def testConfiglet(self):
61        cp = self.portal.portal_controlpanel
[3510]62        self.assert_([1 for ai in cp.listActionInfos()
63                     if ai['id'] == 'GoogleSitemaps'],
64                     'No "GoogleSitemaps" configlet '
65                     'added to plone control panel')
[2527]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")
[3510]71        adapter = "quintagroup.plonegooglesitemaps.newssitemapextender"
72        self.assertNotEqual(lsm.queryAdapter(news,
73                                             interface=ISchemaExtender,
74                                             name=adapter),
75                            None)
[2527]76
[2600]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"]
[3163]85        getSiteManager(self.portal)
[2600]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)
[2527]90
[2600]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
[2841]123    def test_browser_layer(self):
124        if not SUPPORT_BLAYER:
125            return
[2600]126
[2841]127        from plone.browserlayer import utils
128        self.assert_(IGoogleSitemapsLayer in utils.registered_layers(),
129                     "Not registered 'IGoogleSitemapsLayer' browser layer")
130
131
[2527]132class TestGoogleSitemapsUninstallation(TestCase):
133
134    def afterSetUp(self):
[2535]135        super(TestGoogleSitemapsUninstallation, self).afterSetUp()
[2534]136        self.portal.portal_quickinstaller.uninstallProducts(
[3152]137            products=['quintagroup.plonegooglesitemaps', ])
[2527]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")
[3152]144        self.assertEqual(lsm.queryAdapter(news, interface=ISchemaExtender),
[3510]145                         None)
[2527]146
[2594]147    def testConfigletUninstall(self):
[3152]148        self.assertNotEqual(
149            self.portal.portal_quickinstaller.isProductInstalled(PRODUCT),
150            True, '%s is already installed' % PRODUCT)
[2594]151        configTool = self.portal.portal_controlpanel
[3510]152        self.assertEqual('GoogleSitemaps' in [a.getId() for a in
153                                              configTool.listActions()],
154                         False,
155                         'Configlet found after uninstallation')
[2527]156
[2841]157    def test_browserlayer_uninstall(self):
158        if not SUPPORT_BLAYER:
159            return
[2594]160
[2841]161        from plone.browserlayer import utils
[3152]162        self.assertEqual(IGoogleSitemapsLayer in utils.registered_layers(),
[3510]163                         False, "Still registered 'IGoogleSitemapsLayer' "
164                         "browser layer")
[2841]165
166
[2527]167def test_suite():
[3163]168    suite = unittest.TestSuite()
169    suite.addTest(unittest.makeSuite(TestGoogleSitemapsInstallation))
170    suite.addTest(unittest.makeSuite(TestGoogleSitemapsUninstallation))
[2527]171    return suite
172
173if __name__ == '__main__':
174    unittest.main(defaultTest='test_suite')
175#    framework()
Note: See TracBrowser for help on using the repository browser.