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

Last change on this file since 3664 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
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 '
48                     'installation')
49
50    def testSkins(self):
51        ps = self.portal.portal_skins
52        self.assert_('plonegooglesitemaps' in ps.objectIds(),
53                     'No "plonegooglesitemaps" skin '
54                     'layer in portal_skins')
55        self.assert_('plonegooglesitemaps' in
56                     ps.getSkinPath(ps.getDefaultSkin()),
57                     'No "plonegooglesitemaps" skin layer '
58                     'in default skin')
59
60    def testConfiglet(self):
61        cp = self.portal.portal_controlpanel
62        self.assert_([1 for ai in cp.listActionInfos()
63                     if ai['id'] == 'GoogleSitemaps'],
64                     'No "GoogleSitemaps" configlet '
65                     'added to plone control panel')
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")
71        adapter = "quintagroup.plonegooglesitemaps.newssitemapextender"
72        self.assertNotEqual(lsm.queryAdapter(news,
73                                             interface=ISchemaExtender,
74                                             name=adapter),
75                            None)
76
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"]
85        getSiteManager(self.portal)
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)
90
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
123    def test_browser_layer(self):
124        if not SUPPORT_BLAYER:
125            return
126
127        from plone.browserlayer import utils
128        self.assert_(IGoogleSitemapsLayer in utils.registered_layers(),
129                     "Not registered 'IGoogleSitemapsLayer' browser layer")
130
131
132class TestGoogleSitemapsUninstallation(TestCase):
133
134    def afterSetUp(self):
135        super(TestGoogleSitemapsUninstallation, self).afterSetUp()
136        self.portal.portal_quickinstaller.uninstallProducts(
137            products=['quintagroup.plonegooglesitemaps', ])
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")
144        self.assertEqual(lsm.queryAdapter(news, interface=ISchemaExtender),
145                         None)
146
147    def testConfigletUninstall(self):
148        self.assertNotEqual(
149            self.portal.portal_quickinstaller.isProductInstalled(PRODUCT),
150            True, '%s is already installed' % PRODUCT)
151        configTool = self.portal.portal_controlpanel
152        self.assertEqual('GoogleSitemaps' in [a.getId() for a in
153                                              configTool.listActions()],
154                         False,
155                         'Configlet found after uninstallation')
156
157    def test_browserlayer_uninstall(self):
158        if not SUPPORT_BLAYER:
159            return
160
161        from plone.browserlayer import utils
162        self.assertEqual(IGoogleSitemapsLayer in utils.registered_layers(),
163                         False, "Still registered 'IGoogleSitemapsLayer' "
164                         "browser layer")
165
166
167def test_suite():
168    suite = unittest.TestSuite()
169    suite.addTest(unittest.makeSuite(TestGoogleSitemapsInstallation))
170    suite.addTest(unittest.makeSuite(TestGoogleSitemapsUninstallation))
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.