Changeset 1929 in products


Ignore:
Timestamp:
Mar 17, 2010 4:42:39 PM (14 years ago)
Author:
mylan
Message:

#177: Extend indexer registration tests, add tests for default ICanonicalLink adapter

Location:
quintagroup.canonicalpath/trunk/quintagroup/canonicalpath
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.canonicalpath/trunk/quintagroup/canonicalpath/configure.zcml

    r1921 r1929  
    66  <adapter factory=".adapters.DefaultCanonicalPathAdapter" /> 
    77 
     8  <!-- Add general canonical_link adapter --> 
     9  <adapter factory=".adapters.DefaultCanonicalLinkAdapter" /> 
     10 
    811  <!-- Register canonical_path adapter for catalog --> 
    912  <adapter name="canonical_path" factory=".catalog.canonical_path" /> 
    1013 
     14  <!-- Register canonical_link adapter for catalog --> 
     15  <adapter name="canonical_link" factory=".catalog.canonical_link" /> 
     16 
    1117</configure> 
  • quintagroup.canonicalpath/trunk/quintagroup/canonicalpath/tests.py

    r1922 r1929  
    1717 
    1818from quintagroup.canonicalpath.interfaces import ICanonicalPath 
    19 from quintagroup.canonicalpath.adapters import PROPERTY 
     19from quintagroup.canonicalpath.interfaces import ICanonicalLink 
     20from quintagroup.canonicalpath.adapters import PROPERTY_PATH 
     21from quintagroup.canonicalpath.adapters import PROPERTY_LINK 
    2022 
    2123class TestCase(ptc.PloneTestCase): 
     
    4547        wrapper = queryMultiAdapter((self.my_doc, self.catalog), IIndexableObject) 
    4648        self.assertFalse(wrapper is None, "No indexer registered for document object") 
    47          
    48          
    49 class TestDefaultAdapter(TestCase): 
     49 
     50    def testCanonicalPathForPortal(self): 
     51        wrapper = queryMultiAdapter((self.portal, self.catalog), IIndexableObject) 
     52        self.assertTrue(hasattr(wrapper, 'canonical_path'), 
     53            "'canonical_path' attribute not accessible with indexer wrapper for portal object") 
     54 
     55    def testCanonicalPathForAT(self): 
     56        wrapper = queryMultiAdapter((self.my_doc, self.catalog), IIndexableObject) 
     57        self.assertTrue(hasattr(wrapper, 'canonical_path'), 
     58            "'canonical_path' attribute not accessible with indexer wrapper for Document object") 
     59 
     60    def testCanonicalLinkForPortal(self): 
     61        wrapper = queryMultiAdapter((self.portal, self.catalog), IIndexableObject) 
     62        self.assertTrue(hasattr(wrapper, 'canonical_link'), 
     63            "'canonical_link' attribute not accessible with indexer wrapper for portal object") 
     64 
     65    def testCanonicalLinkForAT(self): 
     66        wrapper = queryMultiAdapter((self.my_doc, self.catalog), IIndexableObject) 
     67        self.assertTrue(hasattr(wrapper, 'canonical_link'), 
     68            "'canonical_link' attribute not accessible with indexer wrapper for Document object") 
     69 
     70 
     71         
     72class TestDefaultCanonicalPathAdapter(TestCase): 
    5073 
    5174 
     
    89112 
    90113        cpadapter.canonical_path = newcp 
    91         prop = self.portal.getProperty(PROPERTY, None) 
     114        prop = self.portal.getProperty(PROPERTY_PATH, None) 
    92115        self.assertTrue(prop == newcp, 
    93116            "Canonical path adapter setter NOT SET new '%s' value to '%s' " \ 
    94             "propery for the portal" % (newcp, PROPERTY) ) 
     117            "propery for the portal" % (newcp, PROPERTY_PATH) ) 
    95118 
    96119        self.assertTrue(cpadapter.canonical_path == newcp, 
     
    104127 
    105128        cpadapter.canonical_path = newcp 
    106         prop = self.my_doc.getProperty(PROPERTY, None) 
     129        prop = self.my_doc.getProperty(PROPERTY_PATH, None) 
    107130        self.assertTrue(prop == newcp, 
    108131            "Canonical path adapter setter NOT SET new '%s' value to '%s' " \ 
    109             "propery for the Document" % (newcp, PROPERTY) ) 
     132            "propery for the Document" % (newcp, PROPERTY_PATH) ) 
    110133 
    111134        self.assertTrue(cpadapter.canonical_path == newcp, 
     
    114137 
    115138 
    116     def testValidation(self): 
     139    def testValidationWrong(self): 
    117140        cpadapter = queryAdapter(self.my_doc, ICanonicalPath) 
    118141        for wrong in ['new\nline','s p a c e','with\ttabs']: 
     
    122145                continue 
    123146            else: 
     147                raise self.failureException, "InvalidValue not raised when '%s' wrong value try to set" % wrong 
     148         
     149    def testValidationGood(self): 
     150        cpadapter = queryAdapter(self.my_doc, ICanonicalPath) 
     151        for good in ['./good','../good','/good', 'good']: 
     152            cpadapter.canonical_path = good 
     153 
     154 
     155class TestDefaultCanonicalLinkAdapter(TestCase): 
     156 
     157 
     158    def afterSetUp(self): 
     159        self.loginAsPortalOwner() 
     160        self.purl = getToolByName(self.portal, 'portal_url') 
     161        self.my_doc = makeContent(self.portal, portal_type='Document', id='my_doc') 
     162        self.logout() 
     163 
     164        self.mydoc_cl = self.my_doc.absolute_url() 
     165 
     166    def testRegistration4Portal(self): 
     167        cladapter = queryAdapter(self.portal, ICanonicalLink) 
     168        self.assertFalse(cladapter is None, 
     169            "Can't get canonical link adapter for the plone site object") 
     170 
     171    def testRegistration4AT(self): 
     172        cladapter = queryAdapter(self.my_doc, ICanonicalLink) 
     173        self.assertFalse(cladapter is None, 
     174            "Can't get canonical link adapter for the Document object") 
     175         
     176 
     177    def testGetDefault4Portal(self): 
     178        cladapter = queryAdapter(self.portal, ICanonicalLink) 
     179        self.assertTrue(cladapter.canonical_link == self.purl(), 
     180            "Canonical link adapter return '%s' for portal, must be: '%s'" % ( 
     181            cladapter.canonical_link, self.purl()) ) 
     182 
     183 
     184    def testGetDefault4AT(self): 
     185        cladapter = queryAdapter(self.my_doc, ICanonicalLink) 
     186        self.assertTrue(cladapter.canonical_link == self.mydoc_cl, 
     187            "Canonical link adapter return '%s' for document, must be: '%s'" % ( 
     188            cladapter.canonical_link, self.mydoc_cl) ) 
     189 
     190 
     191    def testSet4Portal(self): 
     192        cladapter = queryAdapter(self.portal, ICanonicalLink) 
     193        newcl = self.purl() + '/new_portal_canonical' 
     194 
     195        cladapter.canonical_link = newcl 
     196        prop = self.portal.getProperty(PROPERTY_LINK, None) 
     197        self.assertTrue(prop == newcl, 
     198            "Canonical link adapter setter NOT SET new '%s' value to '%s' " \ 
     199            "propery for the portal" % (newcl, PROPERTY_LINK) ) 
     200 
     201        self.assertTrue(cladapter.canonical_link == newcl, 
     202            "Canonical link adapter GET '%s' canonical_link, for portal, " \ 
     203            "must be: '%s'" % (cladapter.canonical_link, newcl) ) 
     204 
     205 
     206    def testSet4AT(self): 
     207        cladapter = queryAdapter(self.my_doc, ICanonicalLink) 
     208        newcl = self.mydoc_cl + '/new_mydoc_canonical' 
     209 
     210        cladapter.canonical_link = newcl 
     211        prop = self.my_doc.getProperty(PROPERTY_LINK, None) 
     212        self.assertTrue(prop == newcl, 
     213            "Canonical link adapter setter NOT SET new '%s' value to '%s' " \ 
     214            "propery for the Document" % (newcl, PROPERTY_LINK) ) 
     215 
     216        self.assertTrue(cladapter.canonical_link == newcl, 
     217            "Canonical link adapter GET '%s' canonical_link, for Document, " \ 
     218            "must be: '%s'" % (cladapter.canonical_link, newcl) ) 
     219 
     220    def testValidationWrong(self): 
     221        cladapter = queryAdapter(self.my_doc, ICanonicalLink) 
     222        for wrong in ['http://new\nline','s p a c e','with\ttabs']: 
     223            try: 
     224                cladapter.canonical_link = wrong 
     225            except InvalidValue: 
     226                continue 
     227            else: 
    124228                raise self.failureException, "InvalidValue not raised when " \ 
    125                       "wrong value set" 
     229                    "'%s' wrong value try to set" % wrong 
     230         
     231    def testValidationGood(self): 
     232        cladapter = queryAdapter(self.my_doc, ICanonicalLink) 
     233        for good in ['http://', './good','../good','/good', 'good']: 
     234            cladapter.canonical_link = good 
    126235 
    127236 
     
    129238    return unittest.TestSuite([ 
    130239        unittest.makeSuite(TestIndexerRegistration), 
    131         unittest.makeSuite(TestDefaultAdapter), 
     240        unittest.makeSuite(TestDefaultCanonicalPathAdapter), 
     241        unittest.makeSuite(TestDefaultCanonicalLinkAdapter), 
    132242        ]) 
    133243 
Note: See TracChangeset for help on using the changeset viewer.