[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