[Checkins] SVN: zope.component/tseaver-test_cleanup/ Document / test 'getUtilitiesFor' API.
Tres Seaver
cvs-admin at zope.org
Sun Jun 17 21:37:04 UTC 2012
Log message for revision 126905:
Document / test 'getUtilitiesFor' API.
Changed:
_U zope.component/tseaver-test_cleanup/
U zope.component/tseaver-test_cleanup/docs/api.rst
U zope.component/tseaver-test_cleanup/src/zope/component/tests/test___init__.py
-=-
Modified: zope.component/tseaver-test_cleanup/docs/api.rst
===================================================================
--- zope.component/tseaver-test_cleanup/docs/api.rst 2012-06-17 21:36:57 UTC (rev 126904)
+++ zope.component/tseaver-test_cleanup/docs/api.rst 2012-06-17 21:37:00 UTC (rev 126905)
@@ -164,12 +164,32 @@
.. doctest::
- >>> getGlobalSiteManager().registerUtility(ob, I1, name='foo')
- >>> getUtility(I1, 'foo') is ob
+ >>> ob2 = object()
+ >>> getGlobalSiteManager().registerUtility(ob2, I1, name='foo')
+ >>> getUtility(I1, 'foo') is ob2
True
- >>> queryUtility(I1, 'foo') is ob
+ >>> queryUtility(I1, 'foo') is ob2
True
+Querying Multiple Utilities
+###########################
+
+Sometimes it may be useful to query all utilities, both anonymous and named
+for a given interface. The :function:`~zope.component.getUtilitiesFor` API
+returns a sequence of ``(name, utility)`` tuples, where ``name`` is the
+empty string for the anonymous utility:
+
+.. doctest::
+
+ >>> from zope.component import getUtilitiesFor
+ >>> tuples = list(getUtilitiesFor(I1))
+ >>> len(tuples)
+ 2
+ >>> ('', ob) in tuples
+ True
+ >>> ('foo', ob2) in tuples
+ True
+
Delegated Utility Lookup
########################
Modified: zope.component/tseaver-test_cleanup/src/zope/component/tests/test___init__.py
===================================================================
--- zope.component/tseaver-test_cleanup/src/zope/component/tests/test___init__.py 2012-06-17 21:36:57 UTC (rev 126904)
+++ zope.component/tseaver-test_cleanup/src/zope/component/tests/test___init__.py 2012-06-17 21:37:00 UTC (rev 126905)
@@ -191,6 +191,28 @@
getGlobalSiteManager().registerUtility(obj1, IFoo)
self.assertTrue(queryUtility(IFoo, context=context) is obj2)
+ def test_getUtiltiesFor_nonesuch(self):
+ from zope.interface import Interface
+ from zope.component import getUtilitiesFor
+ class IFoo(Interface):
+ pass
+ self.assertEqual(list(getUtilitiesFor(IFoo)), [])
+
+ def test_getUtiltiesFor_anonymous_hit(self):
+ from zope.interface import Interface
+ from zope.component import getGlobalSiteManager
+ from zope.component import getUtilitiesFor
+ class IFoo(Interface):
+ pass
+ obj = object()
+ obj1 = object()
+ getGlobalSiteManager().registerUtility(obj, IFoo)
+ getGlobalSiteManager().registerUtility(obj1, IFoo, name='bar')
+ tuples = list(getUtilitiesFor(IFoo))
+ self.assertEqual(len(tuples), 2)
+ self.assertTrue(('', obj) in tuples)
+ self.assertTrue(('bar', obj1) in tuples)
+
def test_getNextUtility_global(self):
from zope.component import getGlobalSiteManager
from zope.component import getNextUtility
More information about the checkins
mailing list