[Checkins] SVN: zope.configuration/branches/tseaver-test_cleanup/src/zope/configuration/tests/test_config.py Full coverage for z.c.config.define{Simple, Grouping}Directive.
Tres Seaver
cvs-admin at zope.org
Wed May 9 20:23:01 UTC 2012
Log message for revision 125771:
Full coverage for z.c.config.define{Simple,Grouping}Directive.
Changed:
U zope.configuration/branches/tseaver-test_cleanup/src/zope/configuration/tests/test_config.py
-=-
Modified: zope.configuration/branches/tseaver-test_cleanup/src/zope/configuration/tests/test_config.py
===================================================================
--- zope.configuration/branches/tseaver-test_cleanup/src/zope/configuration/tests/test_config.py 2012-05-09 20:22:54 UTC (rev 125770)
+++ zope.configuration/branches/tseaver-test_cleanup/src/zope/configuration/tests/test_config.py 2012-05-09 20:22:58 UTC (rev 125771)
@@ -1280,27 +1280,171 @@
instance = self._getTargetClass()(context)
return instance
- #TODO coverage
-
class Test_defineSimpleDirective(unittest.TestCase):
def _callFUT(self, *args, **kw):
from zope.configuration.config import defineSimpleDirective
return defineSimpleDirective(*args, **kw)
- #TODO coverage
+ def _makeContext(self):
+ class _Context(FauxContext):
+ def __init__(self):
+ self._registered = []
+ self._documented = []
+ def register(self, usedIn, name, factory):
+ self._registered.append((usedIn, name, factory))
+ def document(self, name, schema, usedIn, handler, info):
+ self._documented.append((name, schema, usedIn, handler, info))
+ return _Context()
+ def test_defaults(self):
+ from zope.interface import Interface
+ from zope.configuration.interfaces import IConfigurationContext as ICC
+ class ISchema(Interface):
+ pass
+ NS = 'http://namespace.example.com/'
+ NAME = 'testing'
+ context = self._makeContext()
+ context.namespace = NS
+ context.info = 'INFO'
+ def _handler():
+ pass
+ self._callFUT(context, NAME, ISchema, _handler)
+
+ self.assertEqual(len(context._registered), 1)
+ usedIn, name, factory = context._registered[0]
+ self.assertEqual(usedIn, ICC)
+ self.assertEqual(name, (NS, NAME))
+ sub = object()
+ ssi = factory(sub, {'a': 1}, 'SUBINFO')
+ self.assertTrue(ssi.context.context is sub)
+ self.assertEqual(ssi.context.info, 'SUBINFO')
+ self.assertEqual(ssi.handler, _handler)
+
+ self.assertEqual(len(context._documented), 1)
+ self.assertEqual(context._documented[0],
+ ((NS, NAME), ISchema, ICC, _handler, 'INFO'))
+
+ def test_explicit_w_star_namespace(self):
+ from zope.interface import Interface
+ class ISchema(Interface):
+ pass
+ class IUsedIn(Interface):
+ pass
+ NS = 'http://namespace.example.com/'
+ NAME = 'testing'
+ context = self._makeContext()
+ context.namespace = NS
+ context.info = 'INFO'
+ def _handler():
+ pass
+
+ self._callFUT(context, NAME, ISchema, _handler,
+ namespace='*', usedIn=IUsedIn)
+
+ self.assertEqual(len(context._registered), 1)
+ usedIn, name, factory = context._registered[0]
+ self.assertEqual(usedIn, IUsedIn)
+ self.assertEqual(name, NAME)
+ sub = object()
+ ssi = factory(sub, {'a': 1}, 'SUBINFO')
+ self.assertTrue(ssi.context.context is sub)
+ self.assertEqual(ssi.context.info, 'SUBINFO')
+ self.assertEqual(ssi.handler, _handler)
+
+ self.assertEqual(len(context._documented), 1)
+ self.assertEqual(context._documented[0],
+ (NAME, ISchema, IUsedIn, _handler, 'INFO'))
+
+
class Test_defineGroupingDirective(unittest.TestCase):
def _callFUT(self, *args, **kw):
from zope.configuration.config import defineGroupingDirective
return defineGroupingDirective(*args, **kw)
- #TODO coverage
+ def _makeContext(self):
+ class _Context(FauxContext):
+ def __init__(self):
+ self._registered = []
+ self._documented = []
+ def register(self, usedIn, name, factory):
+ self._registered.append((usedIn, name, factory))
+ def document(self, name, schema, usedIn, handler, info):
+ self._documented.append((name, schema, usedIn, handler, info))
+ return _Context()
+ def test_defaults(self):
+ from zope.interface import Interface
+ from zope.schema import Text
+ from zope.configuration.interfaces import IConfigurationContext as ICC
+ class ISchema(Interface):
+ arg = Text()
+ NS = 'http://namespace.example.com/'
+ NAME = 'testing'
+ context = self._makeContext()
+ context.namespace = NS
+ context.info = 'INFO'
+ newcontext = FauxContext()
+ _called_with = []
+ def _handler(context, **kw):
+ _called_with.append((context, kw))
+ return newcontext
+ self._callFUT(context, NAME, ISchema, _handler)
+
+ self.assertEqual(len(context._registered), 1)
+ usedIn, name, factory = context._registered[0]
+ self.assertEqual(usedIn, ICC)
+ self.assertEqual(name, (NS, NAME))
+ sub = object()
+ gsi = factory(sub, {'arg': 'val'}, 'SUBINFO')
+ self.assertTrue(gsi.context is newcontext)
+ self.assertEqual(newcontext.info, 'SUBINFO')
+ self.assertEqual(_called_with, [(sub, {'arg': 'val'})])
+
+ self.assertEqual(len(context._documented), 1)
+ self.assertEqual(context._documented[0],
+ ((NS, NAME), ISchema, ICC, _handler, 'INFO'))
+
+ def test_explicit_w_star_namespace(self):
+ from zope.interface import Interface
+ from zope.schema import Text
+ class ISchema(Interface):
+ arg = Text()
+ class IUsedIn(Interface):
+ pass
+ NS = 'http://namespace.example.com/'
+ NAME = 'testing'
+ context = self._makeContext()
+ context.namespace = NS
+ context.info = 'INFO'
+ newcontext = FauxContext()
+ _called_with = []
+ def _handler(context, **kw):
+ _called_with.append((context, kw))
+ return newcontext
+
+ self._callFUT(context, NAME, ISchema, _handler,
+ namespace='*', usedIn=IUsedIn)
+
+ self.assertEqual(len(context._registered), 1)
+ usedIn, name, factory = context._registered[0]
+ self.assertEqual(usedIn, IUsedIn)
+ self.assertEqual(name, NAME)
+ sub = object()
+ gsi = factory(sub, {'arg': 'val'}, 'SUBINFO')
+ self.assertTrue(gsi.context is newcontext)
+ self.assertEqual(newcontext.info, 'SUBINFO')
+ self.assertEqual(_called_with, [(sub, {'arg': 'val'})])
+
+ self.assertEqual(len(context._documented), 1)
+ self.assertEqual(context._documented[0],
+ (NAME, ISchema, IUsedIn, _handler, 'INFO'))
+
+
class _ConformsToIComplexDirectiveContext(object):
def test_class_conforms_to_IComplexDirectiveContext(self):
More information about the checkins
mailing list