Changeset 2400 in products


Ignore:
Timestamp:
May 28, 2010 11:38:08 AM (14 years ago)
Author:
mylan
Message:

#131: Added tests for dynamic schema extending

File:
1 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testNewsSitemaps.py

    r2399 r2400  
    11from base import * 
     2from DateTime import DateTime 
     3 
     4from zope.component import getSiteManager, getGlobalSiteManager 
     5from archetypes.schemaextender.interfaces import ISchemaExtender 
     6 
    27from Products.CMFPlone.utils import _createObjectByType 
    3 from DateTime import DateTime 
    48 
    59class TestNewsSitemapsXML(FunctionalTestCase): 
     
    8286 
    8387 
     88from Products.ATContentTypes.interface import IATNewsItem 
     89from quintagroup.plonegooglesitemaps.content.newsextender import NewsExtender 
     90from quintagroup.plonegooglesitemaps.utils import addLocalSchemaExtenderAdapter 
     91from quintagroup.plonegooglesitemaps.utils import removeLocalSchemaExtenderAdapter 
     92 
     93class TestDynamicSchemaExtending(TestCase): 
     94 
     95    def afterSetUp(self): 
     96        super(TestDynamicSchemaExtending, self).afterSetUp() 
     97        self.loginAsPortalOwner() 
     98        # Add testing news item to portal 
     99        my_news = self.portal.invokeFactory("News Item", id="my_news") 
     100        self.my_news = self.portal["my_news"] 
     101        my_doc = self.portal.invokeFactory("Document", id="my_doc") 
     102        self.my_doc = self.portal["my_doc"] 
     103 
     104    def testNotExtendByDefault(self): 
     105        # Neither of object has extended fields 
     106        self.assertEqual(self.my_news.getField("gsm_access"), None) 
     107        self.assertEqual(self.my_news.getField("gsm_genres"), None) 
     108        self.assertEqual(self.my_doc.getField("gsm_access"), None) 
     109        self.assertEqual(self.my_doc.getField("gsm_genres"), None) 
     110     
     111    def testExtend(self): 
     112        addLocalSchemaExtenderAdapter(self.portal, IATNewsItem) 
     113        self.assertNotEqual(self.my_news.getField("gsm_access"), None) 
     114        self.assertNotEqual(self.my_news.getField("gsm_genres"), None) 
     115        # But for document schema should not extended 
     116        self.assertEqual(self.my_doc.getField("gsm_access"), None) 
     117        self.assertEqual(self.my_doc.getField("gsm_genres"), None) 
     118 
     119    def testRemoveExtend(self): 
     120        addLocalSchemaExtenderAdapter(self.portal, IATNewsItem) 
     121        self.assertNotEqual(self.my_news.getField("gsm_access"), None) 
     122        self.assertNotEqual(self.my_news.getField("gsm_genres"), None) 
     123        removeLocalSchemaExtenderAdapter(self.portal, IATNewsItem) 
     124        self.assertEqual(self.my_news.getField("gsm_access"), None) 
     125        self.assertEqual(self.my_news.getField("gsm_genres"), None) 
     126 
     127    def testRegistrationOnLocalSM(self): 
     128        """SchemaExtender adapters must be registered 
     129           in Local SiteManager only. 
     130        """ 
     131        localsm = getSiteManager(self.portal) 
     132        globalsm = getGlobalSiteManager() 
     133        # Check if by default neither site manger 
     134        # has ISchemaExtender adapter registered in. 
     135        self.assertNotEqual(localsm, globalsm) 
     136        self.assertEqual(localsm.queryAdapter(self.my_news, ISchemaExtender), None) 
     137        self.assertEqual(globalsm.queryAdapter(self.my_news, ISchemaExtender), None) 
     138        # Now register SchemaExtender adapter and 
     139        # check if it present in Local SiteManger only 
     140        addLocalSchemaExtenderAdapter(self.portal, IATNewsItem) 
     141        self.assertNotEqual(localsm.queryAdapter(self.my_news, ISchemaExtender), None) 
     142        self.assertEqual(globalsm.queryAdapter(self.my_news, ISchemaExtender), None) 
     143 
     144 
    84145def test_suite(): 
    85146    from unittest import TestSuite, makeSuite 
    86147    suite = TestSuite() 
    87148    suite.addTest(makeSuite(TestNewsSitemapsXML)) 
     149    suite.addTest(makeSuite(TestDynamicSchemaExtending)) 
    88150    return suite 
Note: See TracChangeset for help on using the changeset viewer.