[Checkins] SVN: z3c.breadcrumb/trunk/src/z3c/breadcrumb/ * test coverage 100%

Nikolay Kim fafhrd at datacom.kz
Tue Dec 11 13:00:44 EST 2007


Log message for revision 82255:
   * test coverage 100%
  
   * register default IBreadcrumbs adapter
  
   * default IBreadcrumbs stops only on virtual host root, not on ISite object
  
  

Changed:
  U   z3c.breadcrumb/trunk/src/z3c/breadcrumb/README.txt
  U   z3c.breadcrumb/trunk/src/z3c/breadcrumb/browser.py
  U   z3c.breadcrumb/trunk/src/z3c/breadcrumb/configure.zcml
  U   z3c.breadcrumb/trunk/src/z3c/breadcrumb/tests.py

-=-
Modified: z3c.breadcrumb/trunk/src/z3c/breadcrumb/README.txt
===================================================================
--- z3c.breadcrumb/trunk/src/z3c/breadcrumb/README.txt	2007-12-11 15:49:50 UTC (rev 82254)
+++ z3c.breadcrumb/trunk/src/z3c/breadcrumb/README.txt	2007-12-11 18:00:44 UTC (rev 82255)
@@ -115,3 +115,18 @@
    {'url': 'http://127.0.0.1/office',
     'activeURL': True,
     'name': u'Zope Foundation'}]
+
+  >>> breadcrumb.__parent__ is office
+  True
+
+Default breadcrumbs stops on virtual host root
+ 
+  >>> request._vh_root = office
+  >>> list(breadcrumb.crumbs)
+  [{'url': 'http://127.0.0.1', 'activeURL': True, 'name': u'Zope Foundation'}]
+
+
+Actually i don't understand what is this for? Stephan, Roger?
+
+  >>> browser.CustomNameBreadcrumb('office')
+  <class 'z3c.breadcrumb.browser.CustomNameBreadcrumb('office')'>

Modified: z3c.breadcrumb/trunk/src/z3c/breadcrumb/browser.py
===================================================================
--- z3c.breadcrumb/trunk/src/z3c/breadcrumb/browser.py	2007-12-11 15:49:50 UTC (rev 82254)
+++ z3c.breadcrumb/trunk/src/z3c/breadcrumb/browser.py	2007-12-11 18:00:44 UTC (rev 82255)
@@ -21,6 +21,7 @@
 import zope.location
 import zope.traversing.api
 import zope.traversing.browser
+from zope.proxy import sameProxiedObjects
 from zope.publisher.interfaces import NotFound
 from zope.publisher import browser
 from zope.publisher.interfaces.http import IHTTPRequest
@@ -32,13 +33,13 @@
 
 class Breadcrumbs(zope.location.Location):
     """Breadcrumbs implementation using IBreadcrum adapters."""
-
     zope.interface.implements(interfaces.IBreadcrumbs)
     zope.component.adapts(zope.interface.Interface, IHTTPRequest)
 
     def __init__(self, context, request):
         self.context = context
         self.request = request
+        self.__parent__ = context
 
     def __getParent(self):
         return getattr(self, '_parent', self.context)
@@ -50,16 +51,20 @@
 
     @property
     def crumbs(self):
+        request = self.request
+
         objects = []
         for obj in ( [self.context] +
                      list(zope.traversing.api.getParents(self.context)) ):
             objects.append(obj)
-            if ISite.providedBy(obj):
+            if sameProxiedObjects(obj, request.getVirtualHostRoot()) or \
+                    isinstance(obj, Exception):
                 break
+
         objects.reverse()
         for object in objects:
-            info = zope.component.getMultiAdapter((object, self.request),
-                                        interfaces.IBreadcrumb)
+            info = zope.component.getMultiAdapter(
+                (object, self.request), interfaces.IBreadcrumb)
             yield {'name': info.name,
                    'url': info.url,
                    'activeURL': info.activeURL}
@@ -80,10 +85,10 @@
     @property
     def name(self):
         """See interfaces.IBreadcrumb"""
-        name = getattr(self.context, 'title', None)
-        if name is None:
-            name = getattr(self.context, '__name__', None)
-        if name is None and IContainmentRoot.providedBy(self.context):
+        name = getattr(self.context, 'title', '')
+        if not name:
+            name = getattr(self.context, '__name__', '')
+        if not name and IContainmentRoot.providedBy(self.context):
             name = 'top'
         return name
 

Modified: z3c.breadcrumb/trunk/src/z3c/breadcrumb/configure.zcml
===================================================================
--- z3c.breadcrumb/trunk/src/z3c/breadcrumb/configure.zcml	2007-12-11 15:49:50 UTC (rev 82254)
+++ z3c.breadcrumb/trunk/src/z3c/breadcrumb/configure.zcml	2007-12-11 18:00:44 UTC (rev 82255)
@@ -3,9 +3,17 @@
 
   <!-- Generic IBreadcrumb adapter -->
   <adapter
-      factory="z3c.breadcrumb.browser.GenericBreadcrumb"
-      trusted="true"
-      permission="zope.Public"
-      />
+     factory="z3c.breadcrumb.browser.GenericBreadcrumb"
+     trusted="true"
+     permission="zope.Public"
+     />
 
+  <!-- Generic IBreadcrumbs adapter -->
+  <adapter
+     factory="z3c.breadcrumb.browser.Breadcrumbs"
+     provides="z3c.breadcrumb.interfaces.IBreadcrumbs"
+     trusted="true"
+     permission="zope.Public"
+     />
+
 </configure>

Modified: z3c.breadcrumb/trunk/src/z3c/breadcrumb/tests.py
===================================================================
--- z3c.breadcrumb/trunk/src/z3c/breadcrumb/tests.py	2007-12-11 15:49:50 UTC (rev 82254)
+++ z3c.breadcrumb/trunk/src/z3c/breadcrumb/tests.py	2007-12-11 18:00:44 UTC (rev 82255)
@@ -16,9 +16,7 @@
 """
 __docformat__ = 'restructuredtext'
 
-import unittest
-from zope.testing import doctest
-from zope.testing.doctestunit import DocFileSuite
+import unittest, doctest
 from zope.app.testing import setup
 from zope.app.testing import placelesssetup
 
@@ -27,17 +25,14 @@
     site = setup.placefulSetUp(site=True)
     test.globs['rootFolder'] = site
 
-
 def tearDown(test):
     setup.placefulTearDown()
 
 
 def test_suite():
     return unittest.TestSuite((
-        DocFileSuite('README.txt',
-            setUp=setUp, tearDown=tearDown,
-            optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS),
-        ))
-
-if __name__ == '__main__':
-    unittest.main(defaultTest='test_suite')
+            doctest.DocFileSuite(
+                'README.txt',
+                setUp=setUp, tearDown=tearDown,
+                optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS),
+            ))



More information about the Checkins mailing list