Changeset 757 in products
- Timestamp:
- Jan 16, 2007 5:07:06 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
qSEOptimizer/branches/js-statistics/tests/testQSEOptimizer.py
r108 r757 10 10 from Products.CMFCore.utils import getToolByName 11 11 from Products.CMFQuickInstallerTool.InstalledProduct import InstalledProduct 12 13 try: 14 from Products.CMFCore.CMFCorePermissions import ManagePortal 15 except: 16 from Products.CMFCore.permissions import ManagePortal 17 18 try: 19 from Products.CMFPlone.migrations import v2_5 20 HAS_PLONE_2_5 = True 21 del v2_5 22 except ImportError: 23 HAS_PLONE_2_5 = False 24 12 from Products.CMFCore.CMFCorePermissions import ManagePortal 25 13 from AccessControl.SecurityManagement import newSecurityManager, noSecurityManager 26 14 import re … … 28 16 from Products.qSEOptimizer.config import * 29 17 30 props = {'stop_words':STOP_WORDS, 'fields':FIELDS, 'additional_keywords': []} 31 32 custom_metatags = [{'meta_name' : 'metatag1', 33 'meta_content' : 'metatag1value'}, 34 {'meta_name' : 'metatag2', 35 'meta_content' : 'metatag2value'}] 18 props = {'stop_words':STOP_WORDS, 'fields':FIELDS} 36 19 37 20 configlets = ({'id':'qSEOptimizer', … … 49 32 qSEO_TYPES = qSEO_CONTENT + qSEO_FOLDER 50 33 51 PloneTestCase.installProduct('Five')52 34 PloneTestCase.installProduct(PRODUCT) 53 35 PloneTestCase.setupPloneSite() 54 55 class TestBeforeInstall(PloneTestCase.FunctionalTestCase):56 57 def afterSetUp(self):58 self.basic_auth = 'mgr:mgrpw'59 self.portal_path = '/%s' % self.portal.absolute_url(1)60 61 def testAccessPortalRootAnonymous(self):62 response = self.publish(self.portal_path)63 self.assertEqual(response.getStatus(), 200)64 65 def testAccessPortalRootAuthenticated(self):66 response = self.publish(self.portal_path, self.basic_auth)67 self.assertEqual(response.getStatus(), 200)68 36 69 37 … … 92 60 portal_types = getToolByName(self.portal, 'portal_types') 93 61 for ptype in portal_types.objectValues(): 94 try: 95 #for Plone-2.5 and higher 96 acts = filter(lambda x: x.id == 'seo_properties', ptype.listActions()) 97 action = acts and acts[0] or None 98 except AttributeError: 99 action = ptype.getActionById('seo_properties', default=None ) 100 62 action = ptype.getActionById('seo_properties', default=None ) 101 63 if ptype.getId() in qSEO_TYPES: 102 64 self.assert_(action, 'Action for %s not found' % ptype.getId()) … … 105 67 106 68 def test_skins_install(self): 107 skinstool=getToolByName(self.portal, 'portal_skins') 69 skinstool=getToolByName(self.portal, 'portal_skins') 108 70 109 71 for skin in skinstool.getSkinSelections(): … … 116 78 mtool = getToolByName(self.portal, 'portal_migration') 117 79 plone_version = mtool.getFileSystemVersion() 118 if plone_version < "3": 119 120 121 122 80 81 for skin in skinstool.getSkinSelections(): 82 path = skinstool.getSkinPath(skin) 83 path = map( string.strip, string.split( path,',' ) ) 84 self.assert_(PRODUCT+'/%s' % plone_version in path, 'qSEOptimizer versioned layer not found in %s' %skin) 123 85 124 86 def test_actions_uninstall(self): … … 127 89 portal_types = getToolByName(self.portal, 'portal_types') 128 90 for ptype in portal_types.objectValues(): 129 try: 130 #for Plone-2.5 and higher 131 acts = filter(lambda x: x.id == 'seo_properties', ptype.listActions()) 132 action = acts and acts[0] or None 133 except AttributeError: 134 action = ptype.getActionById('seo_properties', default=None ) 135 91 action = ptype.getActionById('seo_properties', default=None ) 136 92 self.assert_(not action, 'Action for %s found after uninstallation' % ptype.getId()) 137 93 … … 139 95 self.qi.uninstallProducts([PRODUCT]) 140 96 self.assertNotEqual(self.qi.isProductInstalled(PRODUCT), True,'qSEOptimizer is already installed') 141 skinstool=getToolByName(self.portal, 'portal_skins') 97 skinstool=getToolByName(self.portal, 'portal_skins') 142 98 143 99 for skin in skinstool.getSkinSelections(): … … 164 120 configTool = getToolByName(self.portal, 'portal_controlpanel', None) 165 121 self.assert_(not PRODUCT in [a.getId() for a in configTool.listActions()], 'Configlet found after uninstallation') 166 167 122 168 123 class TestResponse(PloneTestCase.FunctionalTestCase): … … 185 140 description_override=1, keywords_override=1, 186 141 html_comment_override=1, robots_override=1, 187 distribution_override=1, custommetatags=custom_metatags) 188 189 wf_tool = self.portal.portal_workflow 190 wf_tool.doActionFor(my_doc, 'publish') 191 192 abs_path = "/%s" % my_doc.absolute_url(1) 193 self.html = self.publish(abs_path, self.basic_auth).getBody() 142 distribution_override=1) 143 144 self.html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth)) 194 145 195 146 def testTitle(self): … … 198 149 199 150 def testDescription(self): 200 m = re.match('.*<meta name="description" content="it isdescription" />', self.html, re.S|re.M)151 m = re.match('.*<meta content="it is description" name="description" />', self.html, re.S|re.M) 201 152 self.assert_(m, 'Description not set in') 202 153 203 154 def testKeywords(self): 204 m = re.match('.*<meta name="keywords" content="my1|key2" />', self.html, re.S|re.M)155 m = re.match('.*<meta content="my1|key2" name="keywords" />', self.html, re.S|re.M) 205 156 self.assert_(m, 'Keywords not set in') 206 157 207 158 def testRobots(self): 208 m = re.match('.*<meta name="robots" content="ALL" />', self.html, re.S|re.M)159 m = re.match('.*<meta content="ALL" name="robots" />', self.html, re.S|re.M) 209 160 self.assert_(m, 'Robots not set in') 210 161 211 162 def testDistribution(self): 212 m = re.match('.*<meta name="distribution" content="Global" />', self.html, re.S|re.M)163 m = re.match('.*<meta content="Global" name="distribution" />', self.html, re.S|re.M) 213 164 self.assert_(m, 'Distribution not set in') 214 165 … … 217 168 self.assert_(m, 'Comments not set in') 218 169 219 def testTagsOrder(self): 220 m = re.search('name="description".+name="keywords"', self.html, re.S|re.M) 221 self.assert_(m, "Meta tags order not supported.") 222 223 def testCustomMetaTags(self): 224 for tag in custom_metatags: 225 m = re.search('<meta name="%(meta_name)s" content="%(meta_content)s" />' % tag, self.html, re.S|re.M) 226 self.assert_(m, "Custom meta tag %s not applied." % tag['meta_name']) 227 228 class TestAdditionalKeywords(PloneTestCase.FunctionalTestCase): 170 class TestExposeDCMetaTags(PloneTestCase.FunctionalTestCase): 229 171 230 172 def afterSetUp(self): 231 173 self.qi = self.portal.portal_quickinstaller 174 self.sp = self.portal.portal_properties.site_properties 232 175 self.qi.installProduct(PRODUCT) 233 self.sp = self.portal.portal_properties.seo_properties234 self.pu = self.portal.plone_utils235 176 self.portal.changeSkin('Plone Default') 236 177 … … 247 188 self.my_doc = self.portal['my_doc'] 248 189 249 def test_additional_keywords_in_configlet(self):250 path = self.portal.id+'/prefs_qseo_setup?additionalKeywords=foo\nbar'251 self.publish(path, self.basic_auth)252 self.assertEqual(self.sp.additional_keywords, ('foo', 'bar'))253 self.publish(self.portal.id+'/prefs_qseo_setup', self.basic_auth)254 self.assertEqual(self.sp.additional_keywords, ())255 256 def test_listMetaTags_empty(self):257 metatags = self.pu.listMetaTags(self.my_doc)258 self.assert_('keywords' not in metatags)259 260 def test_listMetaTags_one(self):261 self.my_doc.manage_addProperty('qSEO_keywords', ('foo',), 'lines')262 metatags = self.pu.listMetaTags(self.my_doc)263 keywords = metatags.get('keywords')264 self.assertEqual(keywords, 'foo')265 266 def test_listMetaTags_two(self):267 self.my_doc.manage_addProperty('qSEO_keywords', ('foo', 'bar'), 'lines')268 metatags = self.pu.listMetaTags(self.my_doc)269 keywords = metatags.get('keywords')270 self.assertEqual(keywords, 'foo, bar')271 272 def test_additional_keywords_in_listMetaTags_empty(self):273 self.sp.additional_keywords = ('foo',)274 metatags = self.pu.listMetaTags(self.my_doc)275 self.assert_('keywords' not in metatags)276 277 def test_additional_keywords_in_listMetaTags_one(self):278 self.my_doc.setText('<p>foo</p>')279 self.sp.additional_keywords = ('foo',)280 metatags = self.pu.listMetaTags(self.my_doc)281 keywords = metatags.get('keywords')282 self.assertEqual(keywords, 'foo')283 284 def test_additional_keywords_in_listMetaTags_two(self):285 self.my_doc.setText('<p>foo bar</p>')286 self.sp.additional_keywords = ('foo', 'bar')287 metatags = self.pu.listMetaTags(self.my_doc)288 keywords = metatags.get('keywords')289 self.assertEqual(keywords, 'foo, bar')290 291 def test_additional_keywords_in_listMetaTags_merge(self):292 self.my_doc.setText('<p>foo bar</p>')293 self.sp.additional_keywords = ('foo', 'bar')294 self.my_doc.manage_addProperty('qSEO_keywords', ('baz',), 'lines')295 metatags = self.pu.listMetaTags(self.my_doc)296 keywords = metatags.get('keywords')297 self.assertEqual(keywords, 'baz, foo, bar')298 299 300 class TestExposeDCMetaTags(PloneTestCase.FunctionalTestCase):301 302 def afterSetUp(self):303 self.qi = self.portal.portal_quickinstaller304 self.sp = self.portal.portal_properties.site_properties305 self.qi.installProduct(PRODUCT)306 self.portal.changeSkin('Plone Default')307 308 self.basic_auth = 'portal_manager:secret'309 uf = self.app.acl_users310 uf.userFolderAddUser('portal_manager', 'secret', ['Manager'], [])311 user = uf.getUserById('portal_manager')312 if not hasattr(user, 'aq_base'):313 user = user.__of__(uf)314 newSecurityManager(None, user)315 316 '''Preparation for functional testing'''317 self.my_doc = self.portal.invokeFactory('Document', id='my_doc')318 self.my_doc = self.portal['my_doc']319 320 190 def test_exposeDCMetaTags_in_configletOn(self): 321 191 path = self.portal.id+'/prefs_qseo_setup?exposeDCMetaTags=on' … … 342 212 self.html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth)) 343 213 344 m = re.match('.*<meta name="DC.format" content=".*?" />', self.html, re.S|re.M) and re.match('.*<meta name="DC.distribution" content=".*?" />', self.html, re.S|re.M)214 m = re.match('.*<meta content=".*?" name="DC.format" />', self.html, re.S|re.M) and re.match('.*<meta content=".*?" name="DC.distribution" />', self.html, re.S|re.M) 345 215 346 216 self.assert_(m, 'DC meta tags not avaliable when createManager=True') 347 348 217 349 218 TESTS = [TestInstallation, TestResponse, TestExposeDCMetaTags] … … 352 221 from unittest import TestSuite, makeSuite 353 222 suite = TestSuite() 354 for suite_class in TESTS: 355 suite.addTest(makeSuite(suite_class)) 356 357 if HAS_PLONE_2_5: 358 suite.addTest(makeSuite(TestBeforeInstall)) 359 suite.addTest(makeSuite(TestAdditionalKeywords)) 360 223 suite.addTest(makeSuite(TestInstallation)) 224 suite.addTest(makeSuite(TestResponse)) 225 suite.addTest(makeSuite(TestExposeDCMetaTags)) 361 226 return suite 362 227 363 228 if __name__ == '__main__': 364 229 framework() 230
Note: See TracChangeset
for help on using the changeset viewer.