Changeset 757 in products


Ignore:
Timestamp:
Jan 16, 2007 5:07:06 PM (17 years ago)
Author:
piv
Message:

added tests

File:
1 edited

Legend:

Unmodified
Added
Removed
  • qSEOptimizer/branches/js-statistics/tests/testQSEOptimizer.py

    r108 r757  
    1010from Products.CMFCore.utils import getToolByName 
    1111from 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  
     12from Products.CMFCore.CMFCorePermissions import ManagePortal 
    2513from AccessControl.SecurityManagement import newSecurityManager, noSecurityManager 
    2614import re 
     
    2816from Products.qSEOptimizer.config import * 
    2917 
    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'}] 
     18props = {'stop_words':STOP_WORDS, 'fields':FIELDS} 
    3619 
    3720configlets = ({'id':'qSEOptimizer', 
     
    4932qSEO_TYPES   = qSEO_CONTENT + qSEO_FOLDER 
    5033 
    51 PloneTestCase.installProduct('Five') 
    5234PloneTestCase.installProduct(PRODUCT) 
    5335PloneTestCase.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) 
    6836 
    6937 
     
    9260        portal_types = getToolByName(self.portal, 'portal_types') 
    9361        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 ) 
    10163            if ptype.getId() in qSEO_TYPES: 
    10264                self.assert_(action, 'Action for %s not found' % ptype.getId()) 
     
    10567 
    10668    def test_skins_install(self): 
    107         skinstool=getToolByName(self.portal, 'portal_skins') 
     69        skinstool=getToolByName(self.portal, 'portal_skins')  
    10870 
    10971        for skin in skinstool.getSkinSelections(): 
     
    11678        mtool = getToolByName(self.portal, 'portal_migration') 
    11779        plone_version = mtool.getFileSystemVersion() 
    118         if plone_version < "3": 
    119             for skin in skinstool.getSkinSelections(): 
    120                 path = skinstool.getSkinPath(skin) 
    121                 path = map( string.strip, string.split( path,',' ) ) 
    122                 self.assert_(PRODUCT+'/%s' % plone_version in path, 'qSEOptimizer versioned layer not found in %s' %skin) 
     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) 
    12385 
    12486    def test_actions_uninstall(self): 
     
    12789        portal_types = getToolByName(self.portal, 'portal_types') 
    12890        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 ) 
    13692            self.assert_(not action, 'Action for %s found after uninstallation' % ptype.getId()) 
    13793 
     
    13995        self.qi.uninstallProducts([PRODUCT]) 
    14096        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')  
    14298 
    14399        for skin in skinstool.getSkinSelections(): 
     
    164120        configTool = getToolByName(self.portal, 'portal_controlpanel', None) 
    165121        self.assert_(not PRODUCT in [a.getId() for a in configTool.listActions()], 'Configlet found after uninstallation') 
    166  
    167122 
    168123class TestResponse(PloneTestCase.FunctionalTestCase): 
     
    185140                                    description_override=1, keywords_override=1, 
    186141                                    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)) 
    194145 
    195146    def testTitle(self): 
     
    198149 
    199150    def testDescription(self): 
    200         m = re.match('.*<meta name="description" content="it is description" />', self.html, re.S|re.M) 
     151        m = re.match('.*<meta content="it is description" name="description" />', self.html, re.S|re.M) 
    201152        self.assert_(m, 'Description not set in') 
    202153 
    203154    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) 
    205156        self.assert_(m, 'Keywords not set in') 
    206157 
    207158    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) 
    209160        self.assert_(m, 'Robots not set in') 
    210161 
    211162    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) 
    213164        self.assert_(m, 'Distribution not set in') 
    214165 
     
    217168        self.assert_(m, 'Comments not set in') 
    218169 
    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): 
     170class TestExposeDCMetaTags(PloneTestCase.FunctionalTestCase): 
    229171 
    230172    def afterSetUp(self): 
    231173        self.qi = self.portal.portal_quickinstaller 
     174        self.sp = self.portal.portal_properties.site_properties 
    232175        self.qi.installProduct(PRODUCT) 
    233         self.sp = self.portal.portal_properties.seo_properties 
    234         self.pu = self.portal.plone_utils 
    235176        self.portal.changeSkin('Plone Default') 
    236177 
     
    247188        self.my_doc = self.portal['my_doc'] 
    248189 
    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_quickinstaller 
    304         self.sp = self.portal.portal_properties.site_properties 
    305         self.qi.installProduct(PRODUCT) 
    306         self.portal.changeSkin('Plone Default') 
    307  
    308         self.basic_auth = 'portal_manager:secret' 
    309         uf = self.app.acl_users 
    310         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  
    320190    def test_exposeDCMetaTags_in_configletOn(self): 
    321191        path = self.portal.id+'/prefs_qseo_setup?exposeDCMetaTags=on' 
     
    342212        self.html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth)) 
    343213 
    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) 
    345215 
    346216        self.assert_(m, 'DC meta tags not avaliable when createManager=True') 
    347  
    348217 
    349218TESTS = [TestInstallation, TestResponse, TestExposeDCMetaTags] 
     
    352221    from unittest import TestSuite, makeSuite 
    353222    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)) 
    361226    return suite 
    362227 
    363228if __name__ == '__main__': 
    364229    framework() 
     230 
Note: See TracChangeset for help on using the changeset viewer.