[Checkins] SVN: zope.component/tseaver-test_cleanup/ Coverage for z.c.zcml.{_rolledUpFactory, adapter}.

Tres Seaver cvs-admin at zope.org
Tue Jun 26 23:00:50 UTC 2012


Log message for revision 127111:
  Coverage for z.c.zcml.{_rolledUpFactory,adapter}.

Changed:
  _U  zope.component/tseaver-test_cleanup/
  U   zope.component/tseaver-test_cleanup/src/zope/component/tests/test_zcml.py

-=-
Modified: zope.component/tseaver-test_cleanup/src/zope/component/tests/test_zcml.py
===================================================================
--- zope.component/tseaver-test_cleanup/src/zope/component/tests/test_zcml.py	2012-06-26 23:00:41 UTC (rev 127110)
+++ zope.component/tseaver-test_cleanup/src/zope/component/tests/test_zcml.py	2012-06-26 23:00:47 UTC (rev 127111)
@@ -41,6 +41,241 @@
             getSiteManager.reset()
 
 
+class Test__rolledUpFactory(unittest.TestCase):
+
+    def _callFUT(self, *args, **kw):
+        from zope.component.zcml import _rolledUpFactory
+        return _rolledUpFactory(*args, **kw)
+
+    def test_with_one(self):
+        _OBJ = object()
+        _CREATED = object()
+        def _factory(obj):
+            return _CREATED
+        rolled = self._callFUT([_factory])
+        self.assertTrue(rolled.factory is _factory)
+        self.assertTrue(rolled(_OBJ) is _CREATED)
+
+    def test_with_multiple(self):
+        _OBJ = object()
+        _CREATED1 = object()
+        _CREATED2 = object()
+        _CREATED3 = object()
+        def _factory1(obj):
+            return _CREATED1
+        def _factory2(obj):
+            return _CREATED2
+        def _factory3(obj):
+            return _CREATED3
+        rolled = self._callFUT([_factory1, _factory2, _factory3])
+        self.assertTrue(rolled.factory is _factory1)
+        self.assertTrue(rolled(_OBJ) is _CREATED3)
+
+
+class Test_adapter(unittest.TestCase):
+
+    def _callFUT(self, *args, **kw):
+        from zope.component.zcml import adapter
+        return adapter(*args, **kw)
+
+    def _makeConfigContext(self):
+        class _Context(object):
+            info = 'TESTING'
+            def __init__(self):
+                self._actions = []
+            def action(self, *args, **kw):
+                self._actions.append((args, kw))
+        return _Context()
+ 
+    def test_empty_factory(self):
+        from zope.interface import Interface
+        class IFoo(Interface):
+            pass
+        _cfg_ctx = self._makeConfigContext()
+        self.assertRaises(ValueError,
+                          self._callFUT, _cfg_ctx, [], [Interface], IFoo)
+ 
+    def test_multiple_factory_multiple_for_(self):
+        from zope.interface import Interface
+        class IFoo(Interface):
+            pass
+        class IBar(Interface):
+            pass
+        class Foo(object):
+            pass
+        class Bar(object):
+            pass
+        _cfg_ctx = self._makeConfigContext()
+        self.assertRaises(ValueError,
+                          self._callFUT, _cfg_ctx, [Foo, Bar],
+                                         [Interface, IBar], IFoo)
+
+    def test_no_for__factory_not_adapts(self):
+        #@adapter(IFoo)
+        class _Factory(object):
+            def __init__(self, context):
+                self.context = context
+        _cfg_ctx = self._makeConfigContext()
+        self.assertRaises(TypeError, self._callFUT, _cfg_ctx, [_Factory])
+ 
+    def test_no_for__factory_adapts_no_provides_factory_not_implements(self):
+        from zope.interface import Interface
+        from zope.component._declaration import adapter
+        @adapter(Interface)
+        class _Factory(object):
+            def __init__(self, context):
+                self.context = context
+        _cfg_ctx = self._makeConfigContext()
+        self.assertRaises(TypeError, self._callFUT, _cfg_ctx, [_Factory])
+ 
+    def test_multiple_factory_single_for_(self):
+        from zope.interface import Interface
+        from zope.component.interface import provideInterface
+        from zope.component.zcml import handler
+        class IFoo(Interface):
+            pass
+        class Foo(object):
+            pass
+        class Bar(object):
+            pass
+        _cfg_ctx = self._makeConfigContext()
+        self._callFUT(_cfg_ctx, [Foo, Bar], IFoo, [Interface])
+        self.assertEqual(len(_cfg_ctx._actions), 3)
+        self.assertEqual(_cfg_ctx._actions[0][0], ())
+        # Register the adapter
+        action =_cfg_ctx._actions[0][1]
+        self.assertEqual(action['callable'], handler)
+        self.assertEqual(action['discriminator'],
+                         ('adapter', (Interface,), IFoo, ''))
+        self.assertEqual(action['args'][0], 'registerAdapter')
+        self.assertEqual(action['args'][1].factory, Foo) #rolled up
+        self.assertEqual(action['args'][2], (Interface,))
+        self.assertEqual(action['args'][3], IFoo)
+        self.assertEqual(action['args'][4], '')
+        self.assertEqual(action['args'][5], 'TESTING')
+        # Register the provided interface
+        self.assertEqual(_cfg_ctx._actions[1][0], ())
+        action =_cfg_ctx._actions[1][1]
+        self.assertEqual(action['callable'], provideInterface)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'], ('', IFoo))
+        # Register the required interface(s)
+        self.assertEqual(_cfg_ctx._actions[2][0], ())
+        action =_cfg_ctx._actions[2][1]
+        self.assertEqual(action['callable'], provideInterface)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'], ('', Interface))
+ 
+    def test_single_factory_single_for_w_permission(self):
+        from zope.interface import Interface
+        from zope.security.adapter import LocatingUntrustedAdapterFactory
+        from zope.component.zcml import handler
+        class IFoo(Interface):
+            pass
+        class Foo(object):
+            pass
+        _cfg_ctx = self._makeConfigContext()
+        self._callFUT(_cfg_ctx, [Foo], IFoo, [Interface], permission='testing')
+        self.assertEqual(len(_cfg_ctx._actions), 3)
+        self.assertEqual(_cfg_ctx._actions[0][0], ())
+        # Register the adapter
+        action =_cfg_ctx._actions[0][1]
+        self.assertEqual(action['callable'], handler)
+        self.assertEqual(action['discriminator'],
+                         ('adapter', (Interface,), IFoo, ''))
+        self.assertEqual(action['args'][0], 'registerAdapter')
+        factory_proxy = action['args'][1]
+        # Foo wraped by 'protected_factory' plus
+        # 'LocatingUntrustedAdapterFactory'
+        self.assertTrue(isinstance(factory_proxy,
+                        LocatingUntrustedAdapterFactory))
+        self.assertTrue(factory_proxy.factory.factory is Foo)
+        self.assertEqual(action['args'][2], (Interface,))
+        self.assertEqual(action['args'][3], IFoo)
+        self.assertEqual(action['args'][4], '')
+        self.assertEqual(action['args'][5], 'TESTING')
+ 
+    def test_single_factory_single_for_w_locate_no_permission(self):
+        from zope.interface import Interface
+        from zope.security.adapter import LocatingUntrustedAdapterFactory
+        from zope.component.zcml import handler
+        class IFoo(Interface):
+            pass
+        class Foo(object):
+            pass
+        _cfg_ctx = self._makeConfigContext()
+        self._callFUT(_cfg_ctx, [Foo], IFoo, [Interface], locate=True)
+        self.assertEqual(len(_cfg_ctx._actions), 3)
+        self.assertEqual(_cfg_ctx._actions[0][0], ())
+        # Register the adapter
+        action =_cfg_ctx._actions[0][1]
+        self.assertEqual(action['callable'], handler)
+        self.assertEqual(action['discriminator'],
+                         ('adapter', (Interface,), IFoo, ''))
+        self.assertEqual(action['args'][0], 'registerAdapter')
+        factory_proxy = action['args'][1]
+        # Foo wraped by 'LocatingUntrustedAdapterFactory'
+        self.assertTrue(isinstance(factory_proxy,
+                        LocatingUntrustedAdapterFactory))
+        self.assertTrue(factory_proxy.factory is Foo)
+        self.assertEqual(action['args'][2], (Interface,))
+        self.assertEqual(action['args'][3], IFoo)
+        self.assertEqual(action['args'][4], '')
+        self.assertEqual(action['args'][5], 'TESTING')
+ 
+    def test_single_factory_single_for_w_trusted_no_permission(self):
+        from zope.interface import Interface
+        from zope.security.adapter import TrustedAdapterFactory
+        from zope.component.zcml import handler
+        class IFoo(Interface):
+            pass
+        class Foo(object):
+            pass
+        _cfg_ctx = self._makeConfigContext()
+        self._callFUT(_cfg_ctx, [Foo], IFoo, [Interface], trusted=True)
+        self.assertEqual(len(_cfg_ctx._actions), 3)
+        self.assertEqual(_cfg_ctx._actions[0][0], ())
+        # Register the adapter
+        action =_cfg_ctx._actions[0][1]
+        self.assertEqual(action['callable'], handler)
+        self.assertEqual(action['discriminator'],
+                         ('adapter', (Interface,), IFoo, ''))
+        self.assertEqual(action['args'][0], 'registerAdapter')
+        factory_proxy = action['args'][1]
+        # Foo wraped by 'LocatingUntrustedAdapterFactory'
+        self.assertTrue(isinstance(factory_proxy, TrustedAdapterFactory))
+        self.assertTrue(factory_proxy.factory is Foo)
+        self.assertEqual(action['args'][2], (Interface,))
+        self.assertEqual(action['args'][3], IFoo)
+        self.assertEqual(action['args'][4], '')
+        self.assertEqual(action['args'][5], 'TESTING')
+ 
+    def test_no_for__no_provides_factory_adapts_factory_implements(self):
+        from zope.interface import Interface
+        from zope.interface import implementer
+        from zope.component._declaration import adapter
+        from zope.component.zcml import handler
+        class IFoo(Interface):
+            pass
+        @adapter(Interface)
+        @implementer(IFoo)
+        class _Factory(object):
+            def __init__(self, context):
+                self.context = context
+        _cfg_ctx = self._makeConfigContext()
+        self._callFUT(_cfg_ctx, [_Factory])
+        self.assertEqual(len(_cfg_ctx._actions), 3)
+        self.assertEqual(_cfg_ctx._actions[0][0], ())
+        # Register the adapter
+        action =_cfg_ctx._actions[0][1]
+        self.assertEqual(action['callable'], handler)
+        self.assertEqual(action['discriminator'],
+                         ('adapter', (Interface,), IFoo, ''))
+        self.assertEqual(action['args'],
+                         ('registerAdapter', _Factory, (Interface,), IFoo,
+                          '', 'TESTING'))
+
+
 class ResourceViewTests(PlacelessSetup, unittest.TestCase):
 
     def setUp(self):
@@ -489,5 +724,7 @@
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(Test_handler),
+        unittest.makeSuite(Test__rolledUpFactory),
+        unittest.makeSuite(Test_adapter),
         unittest.makeSuite(ResourceViewTests),
     ))



More information about the checkins mailing list