Ignore:
Timestamp:
Sep 20, 2010 3:23:20 PM (10 years ago)
Author:
mylan
Message:

#230: Added tests of migration from qPloneGoogleSitemap to quintagroup.plonegooglesitemap.

Location:
quintagroup.plonegooglesitemaps/branches/migratioin_product/quintagroup/plonegooglesitemaps
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.plonegooglesitemaps/branches/migratioin_product/quintagroup/plonegooglesitemaps/setuphandlers.py

    r2836 r2838  
    8484        controlpanel.unregisterConfiglet(old_product) 
    8585        logger.info("Unregistered '%s' configlet from "\ 
    86                     "portal_controlpanel tool" % old_product) 
     86                    "portal_controlpanel tool." % old_product) 
    8787    # Remove qPloneGoogleSitemaps skin layer 
    8888    for skinName in skins.getSkinSelections(): 
  • quintagroup.plonegooglesitemaps/branches/migratioin_product/quintagroup/plonegooglesitemaps/tests/testUpgrade.py

    r2601 r2838  
    104104            self.setup.setLastVersionForProfile(self.profile, orig_ver) 
    105105 
     106from quintagroup.plonegooglesitemaps import setuphandlers as sh 
     107from StringIO import StringIO 
     108import logging  
     109try: 
     110    from Products.qPloneGoogleSitemaps.content.sitemap import Sitemap as OldSitemap 
     111except ImportError: 
     112    PRESENT_OLD_PRODUCT = False 
     113else: 
     114    PRESENT_OLD_PRODUCT = True 
     115     
     116class TestMigrationFromProduct(TestCase): 
     117 
     118    def afterSetUp(self): 
     119        super(TestMigrationFromProduct, self).afterSetUp() 
     120        self.patch_logger() 
     121        self.gs = self.portal.portal_setup 
     122        self.profile = u'profile-quintagroup.plonegooglesitemaps:migrate_qPGSM' 
     123        self.step = "migrate_qPGSM" 
     124 
     125    def patch_logger(self): 
     126        logger = logging.Logger("test:GSM", logging.NOTSET) 
     127        self.log = StringIO() 
     128        self.thndlr = logging.StreamHandler(self.log) 
     129        self.thndlr.setLevel(logging.DEBUG) 
     130        self.thndlr.setFormatter(logging.Formatter("%(message)s")) 
     131        logger.addHandler(self.thndlr) 
     132 
     133        self.orig_logger = sh.logger 
     134        sh.logger = logger 
     135 
     136    def beforeTearDown(self): 
     137        sh.logger = self.orig_logger 
     138 
     139    def chkLog(self, chkstr): 
     140        self.thndlr.flush() 
     141        self.log.seek(0) 
     142        logs = self.log.getvalue().split('\n') 
     143        return chkstr in logs 
     144 
     145    def testRemoveOldConfiglet(self): 
     146        chk_str = "Unregistered 'qPloneGoogleSitemaps' "\ 
     147                  "configlet from portal_controlpanel tool." 
     148        # 1. No qPloneGoogleSitemaps configlet 
     149        self.gs.runImportStepFromProfile(self.profile, self.step) 
     150        self.assert_(not self.chkLog(chk_str), self.log.getvalue()) 
     151        # 2. qPloneGoogleSitemaps configlet in portal 
     152        self.portal.portal_controlpanel.registerConfiglet( 
     153            id="qPloneGoogleSitemaps", name="qPloneGoogleSitemaps", 
     154            action="string:") 
     155        self.gs.runImportStepFromProfile(self.profile, self.step) 
     156        self.assert_(self.chkLog(chk_str), self.log.getvalue()) 
     157 
     158    def testRemoveOldSkinLayer(self): 
     159        chk_str = "Removed 'qPloneGoogleSitemaps' from 'Plone Default' skin." 
     160        # 1. No qPloneGoogleSitemaps layer in portal_skins 
     161        self.gs.runImportStepFromProfile(self.profile, self.step) 
     162        self.assert_(not self.chkLog(chk_str), self.log.getvalue()) 
     163        # 2. qPloneGoogleSitemaps layer in portal_skins 
     164        skins = self.portal.portal_skins 
     165        skinpath = 'qPloneGoogleSitemaps,' + skins.getSkinPath("Plone Default") 
     166        skins._getSelections()["Plone Default"] = skinpath 
     167        self.gs.runImportStepFromProfile(self.profile, self.step) 
     168        self.assert_(self.chkLog(chk_str), self.log.getvalue()) 
     169 
     170    def testRecriateOldSitemaps(self): 
     171        chk_str = "Successfully replaced '/%s/sitemap.xml' Sitemap" \ 
     172                  % self.portal.id 
     173        # 1. No old sitemap present in portal 
     174        self.gs.runImportStepFromProfile(self.profile, self.step) 
     175        self.assert_(not self.chkLog(chk_str), self.log.getvalue()) 
     176        # 2. Add old sitemap object in to portal 
     177        self.portal.invokeFactory("Sitemap", 'sitemap.xml') 
     178        self.assert_('sitemap.xml' in self.portal.objectIds(), self.portal.objectIds()) 
     179        sm = self.portal['sitemap.xml'] 
     180        sm.__class__ = OldSitemap 
     181        self.gs.runImportStepFromProfile(self.profile, self.step) 
     182        self.assert_(self.chkLog(chk_str), self.log.getvalue()) 
     183         
    106184 
    107185def test_suite(): 
     
    109187    suite = TestSuite() 
    110188    suite.addTest(makeSuite(TestUpgrade)) 
     189    if PRESENT_OLD_PRODUCT: 
     190        suite.addTest(makeSuite(TestMigrationFromProduct)) 
     191 
    111192    return suite 
    112193 
Note: See TracChangeset for help on using the changeset viewer.