[Checkins] SVN: zope.component/tseaver-test_cleanup/ Coverage for z.c.zcml.view.
Tres Seaver
cvs-admin at zope.org
Tue Jun 26 23:01:25 UTC 2012
Log message for revision 127120:
Coverage for z.c.zcml.view.
Changed:
_U zope.component/tseaver-test_cleanup/
U zope.component/tseaver-test_cleanup/src/zope/component/tests/test_zcml.py
U zope.component/tseaver-test_cleanup/src/zope/component/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:01:18 UTC (rev 127119)
+++ zope.component/tseaver-test_cleanup/src/zope/component/tests/test_zcml.py 2012-06-26 23:01:22 UTC (rev 127120)
@@ -750,13 +750,15 @@
def bar():
pass
class _View(object):
+ def __init__(self, context):
+ self.context = context
def foo():
pass
def bar():
pass
_cfg_ctx = _makeConfigContext()
self.assertRaises(ComponentConfigurationError,
- self._callFUT, _cfg_ctx, _View, IViewType, 'test',
+ self._callFUT, _cfg_ctx, (_View,), IViewType, '',
for_=(Interface, Interface),
allowed_interface=IView)
@@ -766,491 +768,666 @@
class IViewType(Interface):
pass
class _View(object):
+ def __init__(self, context):
+ self.context = context
def foo():
pass
def bar():
pass
_cfg_ctx = _makeConfigContext()
self.assertRaises(ComponentConfigurationError,
- self._callFUT, _cfg_ctx, _View, IViewType, 'test',
+ self._callFUT, _cfg_ctx, (_View,), IViewType, '',
for_=(Interface, Interface),
allowed_attributes=('foo', 'bar'))
- def test_w_factory_as_None(self):
+ def test_w_factory_as_empty(self):
from zope.interface import Interface
from zope.component.zcml import ComponentConfigurationError
class IViewType(Interface):
pass
_cfg_ctx = _makeConfigContext()
self.assertRaises(ComponentConfigurationError,
- self._callFUT, _cfg_ctx, None, IViewType, 'test',
+ self._callFUT, _cfg_ctx, (), IViewType, '',
for_=(Interface, Interface))
+ def test_w_multiple_factory_multiple_for_(self):
+ from zope.interface import Interface
+ from zope.component.zcml import ComponentConfigurationError
+ class IViewType(Interface):
+ pass
+ class Foo(object):
+ pass
+ class Bar(object):
+ pass
+ _cfg_ctx = _makeConfigContext()
+ self.assertRaises(ComponentConfigurationError,
+ self._callFUT, _cfg_ctx, (Foo, Bar), IViewType, '',
+ for_=(Interface, Interface))
+
def test_w_for__as_empty(self):
from zope.interface import Interface
from zope.component.zcml import ComponentConfigurationError
class IViewType(Interface):
pass
class _View(object):
- def foo():
- pass
- def bar():
- pass
+ def __init__(self, context):
+ self.context = context
_cfg_ctx = _makeConfigContext()
self.assertRaises(ComponentConfigurationError,
- self._callFUT, _cfg_ctx, _View, IViewType, 'test',
+ self._callFUT, _cfg_ctx, (_View,), IViewType, '',
for_=())
+ def test_w_single_factory_single_for__wo_permission_w_name(self):
+ from zope.interface import Interface
+ from zope.component.zcml import handler
+ from zope.component.interface import provideInterface
+ class IViewType(Interface):
+ pass
+ class _View(object):
+ def __init__(self, context):
+ self.context = context
+ _cfg_ctx = _makeConfigContext()
+ self._callFUT(_cfg_ctx, (_View,), IViewType, 'test', for_=(Interface,))
+ self.assertEqual(len(_cfg_ctx._actions), 4)
+ 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'],
+ ('view', (Interface, IViewType), 'test', Interface))
+ self.assertEqual(action['args'][0], 'registerAdapter')
+ self.assertEqual(action['args'][1], _View)
+ self.assertEqual(action['args'][2], (Interface, IViewType))
+ self.assertEqual(action['args'][3], Interface)
+ self.assertEqual(action['args'][4], 'test')
+ 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'], ('', Interface))
+ # 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))
+ self.assertEqual(_cfg_ctx._actions[3][0], ())
+ action =_cfg_ctx._actions[3][1]
+ self.assertEqual(action['callable'], provideInterface)
+ self.assertEqual(action['discriminator'], None)
+ self.assertEqual(action['args'], ('', IViewType))
-class ResourceViewTests(PlacelessSetup, unittest.TestCase):
+ def test_w_multiple_factory_single_for__wo_permission(self):
+ from zope.interface import Interface
+ from zope.component.zcml import handler
+ class IViewType(Interface):
+ pass
+ class _View(object):
+ def __init__(self, context):
+ self.context = context
+ class _View2(object):
+ def __init__(self, context, request):
+ self.context = context
+ self.request = request
+ _cfg_ctx = _makeConfigContext()
+ self._callFUT(_cfg_ctx, [_View, _View2], IViewType, '',
+ for_=(Interface,))
+ 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'],
+ ('view', (Interface, IViewType), '', Interface))
+ self.assertEqual(action['args'][0], 'registerAdapter')
+ factory = action['args'][1]
+ self.assertTrue(factory.factory is _View)
+ context = object()
+ request = object()
+ view = factory(context, request)
+ self.assertTrue(isinstance(view, _View2))
+ self.assertTrue(view.request is request)
+ self.assertTrue(isinstance(view.context, _View))
+ self.assertTrue(view.context.context is context)
+ self.assertEqual(action['args'][2], (Interface, IViewType))
+ self.assertEqual(action['args'][3], Interface)
+ self.assertEqual(action['args'][4], '')
+ self.assertEqual(action['args'][5], 'TESTING')
- def setUp(self):
- from zope import component
- from zope import security
- from zope.configuration.xmlconfig import XMLConfig
- super(ResourceViewTests, self).setUp()
- XMLConfig('meta.zcml', component)()
- XMLConfig('meta.zcml', security)()
+ def test_w_single_factory_single_for__w_permission(self):
+ from zope.interface import Interface
+ from zope.component.zcml import handler
+ class IViewType(Interface):
+ pass
+ class _View(object):
+ def __init__(self, context, request):
+ self.context = context
+ self.request = request
+ _cfg_ctx = _makeConfigContext()
+ self._callFUT(_cfg_ctx, [_View], IViewType, '', for_=(Interface,),
+ permission='testing')
+ 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'],
+ ('view', (Interface, IViewType), '', Interface))
+ self.assertEqual(action['args'][0], 'registerAdapter')
+ factory = action['args'][1]
+ context = object()
+ request = object()
+ view = factory(context, request)
+ self.assertTrue(view.context is context)
+ self.assertTrue(view.request is request)
+ self.assertTrue(factory.factory is _View)
+ self.assertEqual(action['args'][2], (Interface, IViewType))
+ self.assertEqual(action['args'][3], Interface)
+ self.assertEqual(action['args'][4], '')
+ self.assertEqual(action['args'][5], 'TESTING')
- def _config(self, zcml, testing=0):
- from cStringIO import StringIO
- from zope.configuration.xmlconfig import xmlconfig
- xmlconfig(StringIO(_ZCML_TEMPLATE % zcml), testing=testing)
+ def test_w_single_factory_single_for__w_permission_and_allowed_attrs(self):
+ from zope.interface import Interface
+ from zope.component.zcml import handler
+ class IViewType(Interface):
+ pass
+ class _View(object):
+ def __init__(self, context, request):
+ self.context = context
+ self.request = request
+ def bar(self):
+ pass
+ _cfg_ctx = _makeConfigContext()
+ self._callFUT(_cfg_ctx, [_View], IViewType, '', for_=(Interface,),
+ permission='testing', allowed_attributes=('bar',))
+ 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'],
+ ('view', (Interface, IViewType), '', Interface))
+ self.assertEqual(action['args'][0], 'registerAdapter')
+ factory = action['args'][1]
+ checker = factory.checker
+ self.assertEqual(checker.get_permissions, {'bar': 'testing'})
- def testView(self):
- from zope.component import queryMultiAdapter
- from zope.component.tests.examples import Ob3
- from zope.component.testfiles.views import IV
- from zope.component.testfiles.views import Request
- from zope.component.testfiles.views import V1
- ob = Ob3()
- request = Request(IV)
- self.assertEqual(queryMultiAdapter((ob, request), name=u'test'), None)
+ def test_w_single_factory_single_for__w_permission_and_allowed_iface(self):
+ from zope.interface import Interface
+ from zope.component.zcml import handler
+ class IViewType(Interface):
+ def bar(self):
+ pass
+ class _View(object):
+ def __init__(self, context, request):
+ self.context = context
+ self.request = request
+ def bar(self):
+ pass
+ _cfg_ctx = _makeConfigContext()
+ self._callFUT(_cfg_ctx, [_View], IViewType, '', for_=(Interface,),
+ permission='testing', allowed_interface=(IViewType,))
+ 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'],
+ ('view', (Interface, IViewType), '', Interface))
+ self.assertEqual(action['args'][0], 'registerAdapter')
+ factory = action['args'][1]
+ checker = factory.checker
+ self.assertEqual(checker.get_permissions, {'bar': 'testing'})
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"/>
- ''')
+if 0: #these tests suck: get coverage to 100% without them
- view = queryMultiAdapter((ob, request), name=u'test')
- self.assertEqual(view.__class__, V1)
+ class ResourceViewTests(PlacelessSetup, unittest.TestCase):
- def testMultiView(self):
- from zope.component import queryMultiAdapter
- from zope.component.tests.examples import Ob3
- from zope.component.testfiles.adapter import A1
- from zope.component.testfiles.adapter import A2
- from zope.component.testfiles.adapter import A3
- from zope.component.testfiles.views import IV
- from zope.component.testfiles.views import Request
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.adapter.A3"
- for="zope.component.testfiles.views.IC
- zope.component.testfiles.adapter.I1
- zope.component.testfiles.adapter.I2"
- type="zope.component.testfiles.views.IV"/>
- ''')
+ def setUp(self):
+ from zope import component
+ from zope import security
+ from zope.configuration.xmlconfig import XMLConfig
+ super(ResourceViewTests, self).setUp()
+ XMLConfig('meta.zcml', component)()
+ XMLConfig('meta.zcml', security)()
+ def _config(self, zcml, testing=0):
+ from cStringIO import StringIO
+ from zope.configuration.xmlconfig import xmlconfig
+ xmlconfig(StringIO(_ZCML_TEMPLATE % zcml), testing=testing)
- ob = Ob3()
- a1 = A1()
- a2 = A2()
- request = Request(IV)
- view = queryMultiAdapter((ob, a1, a2, request), name=u'test')
- self.assertEqual(view.__class__, A3)
- self.assertEqual(view.context, (ob, a1, a2, request))
+ def testView(self):
+ from zope.component import queryMultiAdapter
+ from zope.component.tests.examples import Ob3
+ from zope.component.testfiles.views import IV
+ from zope.component.testfiles.views import Request
+ from zope.component.testfiles.views import V1
+ ob = Ob3()
+ request = Request(IV)
+ self.assertEqual(queryMultiAdapter((ob, request), name=u'test'), None)
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"/>
+ ''')
- def testMultiView_fails_w_multiple_factories(self):
- from zope.component.zcml import ComponentConfigurationError
- self.assertRaises(ComponentConfigurationError,
- self._config,
- '''
- <view name="test"
- factory="zope.component.testfiles.adapter.A3
- zope.component.testfiles.adapter.A2"
+ view = queryMultiAdapter((ob, request), name=u'test')
+ self.assertEqual(view.__class__, V1)
+
+ def testMultiView(self):
+ from zope.component import queryMultiAdapter
+ from zope.component.tests.examples import Ob3
+ from zope.component.testfiles.adapter import A1
+ from zope.component.testfiles.adapter import A2
+ from zope.component.testfiles.adapter import A3
+ from zope.component.testfiles.views import IV
+ from zope.component.testfiles.views import Request
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.adapter.A3"
for="zope.component.testfiles.views.IC
- zope.component.testfiles.adapter.I1
- zope.component.testfiles.adapter.I2"
+ zope.component.testfiles.adapter.I1
+ zope.component.testfiles.adapter.I2"
type="zope.component.testfiles.views.IV"/>
- ''',
- testing=1,
- )
+ ''')
- def testView_w_multiple_factories(self):
- from zope.component import queryMultiAdapter
- from zope.component.tests.examples import Ob3
- from zope.component.testfiles.adapter import A1
- from zope.component.testfiles.adapter import A2
- from zope.component.testfiles.adapter import A3
- from zope.component.testfiles.views import IV
- from zope.component.testfiles.views import Request
- from zope.component.testfiles.views import V1
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.adapter.A1
- zope.component.testfiles.adapter.A2
- zope.component.testfiles.adapter.A3
- zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"/>
- ''')
- ob = Ob3()
+ ob = Ob3()
+ a1 = A1()
+ a2 = A2()
+ request = Request(IV)
+ view = queryMultiAdapter((ob, a1, a2, request), name=u'test')
+ self.assertEqual(view.__class__, A3)
+ self.assertEqual(view.context, (ob, a1, a2, request))
- # The view should be a V1 around an A3, around an A2, around
- # an A1, anround ob:
- view = queryMultiAdapter((ob, Request(IV)), name=u'test')
- self.assertEqual(view.__class__, V1)
- a3 = view.context
- self.assertEqual(a3.__class__, A3)
- a2 = a3.context[0]
- self.assertEqual(a2.__class__, A2)
- a1 = a2.context[0]
- self.assertEqual(a1.__class__, A1)
- self.assertEqual(a1.context[0], ob)
- def testView_fails_w_no_factories(self):
- from zope.component.zcml import ComponentConfigurationError
- self.assertRaises(ComponentConfigurationError,
- self._config,
- '''
- <view name="test"
- factory=""
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"/>
- ''',
- testing=1,
+ def testMultiView_fails_w_multiple_factories(self):
+ from zope.component.zcml import ComponentConfigurationError
+ self.assertRaises(ComponentConfigurationError,
+ self._config,
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.adapter.A3
+ zope.component.testfiles.adapter.A2"
+ for="zope.component.testfiles.views.IC
+ zope.component.testfiles.adapter.I1
+ zope.component.testfiles.adapter.I2"
+ type="zope.component.testfiles.views.IV"/>
+ ''',
+ testing=1,
)
+ def testView_w_multiple_factories(self):
+ from zope.component import queryMultiAdapter
+ from zope.component.tests.examples import Ob3
+ from zope.component.testfiles.adapter import A1
+ from zope.component.testfiles.adapter import A2
+ from zope.component.testfiles.adapter import A3
+ from zope.component.testfiles.views import IV
+ from zope.component.testfiles.views import Request
+ from zope.component.testfiles.views import V1
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.adapter.A1
+ zope.component.testfiles.adapter.A2
+ zope.component.testfiles.adapter.A3
+ zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"/>
+ ''')
- def testViewThatProvidesAnInterface(self):
- from zope.component import queryMultiAdapter
- from zope.component.tests.examples import Ob3
- from zope.component.testfiles.views import IR
- from zope.component.testfiles.views import IV
- from zope.component.testfiles.views import Request
- from zope.component.testfiles.views import V1
- ob = Ob3()
- self.assertEqual(queryMultiAdapter((ob, Request(IR)), IV, u'test'),
- None)
+ ob = Ob3()
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IR"
- />
- ''')
+ # The view should be a V1 around an A3, around an A2, around
+ # an A1, anround ob:
+ view = queryMultiAdapter((ob, Request(IV)), name=u'test')
+ self.assertEqual(view.__class__, V1)
+ a3 = view.context
+ self.assertEqual(a3.__class__, A3)
+ a2 = a3.context[0]
+ self.assertEqual(a2.__class__, A2)
+ a1 = a2.context[0]
+ self.assertEqual(a1.__class__, A1)
+ self.assertEqual(a1.context[0], ob)
- self.assertEqual(queryMultiAdapter((ob, Request(IR)), IV, u'test'),
- None)
+ def testView_fails_w_no_factories(self):
+ from zope.component.zcml import ComponentConfigurationError
+ self.assertRaises(ComponentConfigurationError,
+ self._config,
+ '''
+ <view name="test"
+ factory=""
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"/>
+ ''',
+ testing=1,
+ )
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IR"
- provides="zope.component.testfiles.views.IV"
- />
- ''')
- v = queryMultiAdapter((ob, Request(IR)), IV, u'test')
- self.assertEqual(v.__class__, V1)
+ def testViewThatProvidesAnInterface(self):
+ from zope.component import queryMultiAdapter
+ from zope.component.tests.examples import Ob3
+ from zope.component.testfiles.views import IR
+ from zope.component.testfiles.views import IV
+ from zope.component.testfiles.views import Request
+ from zope.component.testfiles.views import V1
+ ob = Ob3()
+ self.assertEqual(queryMultiAdapter((ob, Request(IR)), IV, u'test'),
+ None)
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IR"
+ />
+ ''')
- def testUnnamedViewThatProvidesAnInterface(self):
- from zope.component import queryMultiAdapter
- from zope.component.tests.examples import Ob3
- from zope.component.testfiles.views import IR
- from zope.component.testfiles.views import IV
- from zope.component.testfiles.views import Request
- from zope.component.testfiles.views import V1
- ob = Ob3()
- self.assertEqual(queryMultiAdapter((ob, Request(IR)), IV), None)
+ self.assertEqual(queryMultiAdapter((ob, Request(IR)), IV, u'test'),
+ None)
- self._config(
- '''
- <view factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IR"
- />
- ''')
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IR"
+ provides="zope.component.testfiles.views.IV"
+ />
+ ''')
- v = queryMultiAdapter((ob, Request(IR)), IV)
- self.assertEqual(v, None)
+ v = queryMultiAdapter((ob, Request(IR)), IV, u'test')
+ self.assertEqual(v.__class__, V1)
- self._config(
- '''
- <view factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IR"
- provides="zope.component.testfiles.views.IV"
- />
- ''')
- v = queryMultiAdapter((ob, Request(IR)), IV)
- self.assertEqual(v.__class__, V1)
+ def testUnnamedViewThatProvidesAnInterface(self):
+ from zope.component import queryMultiAdapter
+ from zope.component.tests.examples import Ob3
+ from zope.component.testfiles.views import IR
+ from zope.component.testfiles.views import IV
+ from zope.component.testfiles.views import Request
+ from zope.component.testfiles.views import V1
+ ob = Ob3()
+ self.assertEqual(queryMultiAdapter((ob, Request(IR)), IV), None)
- def testViewHavingARequiredClass(self):
- from zope.interface import implementer
- from zope.component import getMultiAdapter
- from zope.component.interfaces import ComponentLookupError
- from zope.component.testfiles.adapter import A1
- from zope.component.testfiles.components import Content
- from zope.component.testfiles.components import IContent
- from zope.component.testfiles.views import IR
- from zope.component.testfiles.views import Request
- self._config(
- '''
- <view
- for="zope.component.testfiles.components.Content"
- type="zope.component.testfiles.views.IR"
- factory="zope.component.testfiles.adapter.A1"
- />
- ''')
+ self._config(
+ '''
+ <view factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IR"
+ />
+ ''')
- content = Content()
- a1 = getMultiAdapter((content, Request(IR)))
- self.assert_(isinstance(a1, A1))
+ v = queryMultiAdapter((ob, Request(IR)), IV)
+ self.assertEqual(v, None)
- @implementer(IContent)
- class MyContent:
- pass
+ self._config(
+ '''
+ <view factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IR"
+ provides="zope.component.testfiles.views.IV"
+ />
+ ''')
- self.assertRaises(ComponentLookupError,
- getMultiAdapter, (MyContent(), Request(IR)))
+ v = queryMultiAdapter((ob, Request(IR)), IV)
+ self.assertEqual(v.__class__, V1)
- def testInterfaceProtectedView(self):
- from zope.security.checker import ProxyFactory
- from zope.component import getMultiAdapter
- from zope.component.tests.examples import Ob3
- from zope.component.testfiles.views import IV
- from zope.component.testfiles.views import Request
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"
- permission="zope.Public"
- allowed_interface="zope.component.testfiles.views.IV"
- />
- ''')
+ def testViewHavingARequiredClass(self):
+ from zope.interface import implementer
+ from zope.component import getMultiAdapter
+ from zope.component.interfaces import ComponentLookupError
+ from zope.component.testfiles.adapter import A1
+ from zope.component.testfiles.components import Content
+ from zope.component.testfiles.components import IContent
+ from zope.component.testfiles.views import IR
+ from zope.component.testfiles.views import Request
+ self._config(
+ '''
+ <view
+ for="zope.component.testfiles.components.Content"
+ type="zope.component.testfiles.views.IR"
+ factory="zope.component.testfiles.adapter.A1"
+ />
+ ''')
- v = ProxyFactory(getMultiAdapter((Ob3(), Request(IV)), name='test'))
- self.assertEqual(v.index(), 'V1 here')
- self.assertRaises(Exception, getattr, v, 'action')
+ content = Content()
+ a1 = getMultiAdapter((content, Request(IR)))
+ self.assert_(isinstance(a1, A1))
- def testAttributeProtectedView(self):
- from zope.component import getMultiAdapter
- from zope.component.tests.examples import Ob3
- from zope.component.testfiles.views import IV
- from zope.component.testfiles.views import Request
- from zope.security.checker import ProxyFactory
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"
- permission="zope.Public"
- allowed_attributes="action"
- />
- ''')
+ @implementer(IContent)
+ class MyContent:
+ pass
- v = ProxyFactory(getMultiAdapter((Ob3(), Request(IV)), name='test'))
- self.assertEqual(v.action(), 'done')
- self.assertRaises(Exception, getattr, v, 'index')
+ self.assertRaises(ComponentLookupError,
+ getMultiAdapter, (MyContent(), Request(IR)))
- def testInterfaceAndAttributeProtectedView(self):
- from zope.component import getMultiAdapter
- from zope.component.tests.examples import Ob3
- from zope.component.testfiles.views import IV
- from zope.component.testfiles.views import Request
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"
- permission="zope.Public"
- allowed_attributes="action"
- allowed_interface="zope.component.testfiles.views.IV"
- />
- ''')
+ def testInterfaceProtectedView(self):
+ from zope.security.checker import ProxyFactory
+ from zope.component import getMultiAdapter
+ from zope.component.tests.examples import Ob3
+ from zope.component.testfiles.views import IV
+ from zope.component.testfiles.views import Request
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"
+ permission="zope.Public"
+ allowed_interface="zope.component.testfiles.views.IV"
+ />
+ ''')
- v = getMultiAdapter((Ob3(), Request(IV)), name='test')
- self.assertEqual(v.index(), 'V1 here')
- self.assertEqual(v.action(), 'done')
+ v = ProxyFactory(getMultiAdapter((Ob3(), Request(IV)), name='test'))
+ self.assertEqual(v.index(), 'V1 here')
+ self.assertRaises(Exception, getattr, v, 'action')
- def testDuplicatedInterfaceAndAttributeProtectedView(self):
- from zope.component import getMultiAdapter
- from zope.component.tests.examples import Ob3
- from zope.component.testfiles.views import IV
- from zope.component.testfiles.views import Request
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"
- permission="zope.Public"
- allowed_attributes="action index"
- allowed_interface="zope.component.testfiles.views.IV"
- />
- ''')
+ def testAttributeProtectedView(self):
+ from zope.component import getMultiAdapter
+ from zope.component.tests.examples import Ob3
+ from zope.component.testfiles.views import IV
+ from zope.component.testfiles.views import Request
+ from zope.security.checker import ProxyFactory
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"
+ permission="zope.Public"
+ allowed_attributes="action"
+ />
+ ''')
- v = getMultiAdapter((Ob3(), Request(IV)), name='test')
- self.assertEqual(v.index(), 'V1 here')
- self.assertEqual(v.action(), 'done')
+ v = ProxyFactory(getMultiAdapter((Ob3(), Request(IV)), name='test'))
+ self.assertEqual(v.action(), 'done')
+ self.assertRaises(Exception, getattr, v, 'index')
- def testIncompleteProtectedViewNoPermission(self):
- from zope.component.zcml import ComponentConfigurationError
- self.assertRaises(ComponentConfigurationError,
- self._config,
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"
- allowed_attributes="action index"
- />
- ''',
- testing=1,
- )
+ def testInterfaceAndAttributeProtectedView(self):
+ from zope.component import getMultiAdapter
+ from zope.component.tests.examples import Ob3
+ from zope.component.testfiles.views import IV
+ from zope.component.testfiles.views import Request
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"
+ permission="zope.Public"
+ allowed_attributes="action"
+ allowed_interface="zope.component.testfiles.views.IV"
+ />
+ ''')
- def testViewUndefinedPermission(self):
- self.assertRaises(ValueError, #raised from zope.security
- self._config,
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"
- permission="zope.UndefinedPermission"
- allowed_attributes="action index"
- allowed_interface="zope.component.testfiles.views.IV"
- />
- ''',
- testing=1)
+ v = getMultiAdapter((Ob3(), Request(IV)), name='test')
+ self.assertEqual(v.index(), 'V1 here')
+ self.assertEqual(v.action(), 'done')
- def testResource(self):
- from zope.component import queryAdapter
- from zope.component.tests.examples import Ob3
- from zope.component.testfiles.views import IV
- from zope.component.testfiles.views import Request
- from zope.component.testfiles.views import R1
- ob = Ob3()
- self.assertEqual(
- queryAdapter(Request(IV), name=u'test'), None)
- self._config(
- '''
- <resource name="test"
- factory="zope.component.testfiles.views.R1"
- type="zope.component.testfiles.views.IV"/>
- ''')
+ def testDuplicatedInterfaceAndAttributeProtectedView(self):
+ from zope.component import getMultiAdapter
+ from zope.component.tests.examples import Ob3
+ from zope.component.testfiles.views import IV
+ from zope.component.testfiles.views import Request
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"
+ permission="zope.Public"
+ allowed_attributes="action index"
+ allowed_interface="zope.component.testfiles.views.IV"
+ />
+ ''')
- self.assertEqual(
- queryAdapter(Request(IV), name=u'test').__class__,
- R1)
+ v = getMultiAdapter((Ob3(), Request(IV)), name='test')
+ self.assertEqual(v.index(), 'V1 here')
+ self.assertEqual(v.action(), 'done')
- def testResourceThatProvidesAnInterface(self):
- from zope.component import queryAdapter
- from zope.component.tests.examples import Ob3
- from zope.component.testfiles.views import IR
- from zope.component.testfiles.views import IV
- from zope.component.testfiles.views import Request
- from zope.component.testfiles.views import R1
- ob = Ob3()
- self.assertEqual(queryAdapter(Request(IR), IV, u'test'),
- None)
+ def testIncompleteProtectedViewNoPermission(self):
+ from zope.component.zcml import ComponentConfigurationError
+ self.assertRaises(ComponentConfigurationError,
+ self._config,
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"
+ allowed_attributes="action index"
+ />
+ ''',
+ testing=1,
+ )
- self._config(
- '''
- <resource
- name="test"
- factory="zope.component.testfiles.views.R1"
- type="zope.component.testfiles.views.IR"
- />
- ''')
+ def testViewUndefinedPermission(self):
+ self.assertRaises(ValueError, #raised from zope.security
+ self._config,
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"
+ permission="zope.UndefinedPermission"
+ allowed_attributes="action index"
+ allowed_interface="zope.component.testfiles.views.IV"
+ />
+ ''',
+ testing=1)
- v = queryAdapter(Request(IR), IV, name=u'test')
- self.assertEqual(v, None)
+ def testResource(self):
+ from zope.component import queryAdapter
+ from zope.component.tests.examples import Ob3
+ from zope.component.testfiles.views import IV
+ from zope.component.testfiles.views import Request
+ from zope.component.testfiles.views import R1
+ ob = Ob3()
+ self.assertEqual(
+ queryAdapter(Request(IV), name=u'test'), None)
+ self._config(
+ '''
+ <resource name="test"
+ factory="zope.component.testfiles.views.R1"
+ type="zope.component.testfiles.views.IV"/>
+ ''')
- self._config(
- '''
- <resource
- name="test"
- factory="zope.component.testfiles.views.R1"
- type="zope.component.testfiles.views.IR"
- provides="zope.component.testfiles.views.IV"
- />
- ''')
+ self.assertEqual(
+ queryAdapter(Request(IV), name=u'test').__class__,
+ R1)
- v = queryAdapter(Request(IR), IV, name=u'test')
- self.assertEqual(v.__class__, R1)
+ def testResourceThatProvidesAnInterface(self):
+ from zope.component import queryAdapter
+ from zope.component.tests.examples import Ob3
+ from zope.component.testfiles.views import IR
+ from zope.component.testfiles.views import IV
+ from zope.component.testfiles.views import Request
+ from zope.component.testfiles.views import R1
+ ob = Ob3()
+ self.assertEqual(queryAdapter(Request(IR), IV, u'test'),
+ None)
- def testUnnamedResourceThatProvidesAnInterface(self):
- from zope.component import queryAdapter
- from zope.component.tests.examples import Ob3
- from zope.component.testfiles.views import IR
- from zope.component.testfiles.views import IV
- from zope.component.testfiles.views import Request
- from zope.component.testfiles.views import R1
- ob = Ob3()
- self.assertEqual(queryAdapter(Request(IR), IV), None)
+ self._config(
+ '''
+ <resource
+ name="test"
+ factory="zope.component.testfiles.views.R1"
+ type="zope.component.testfiles.views.IR"
+ />
+ ''')
- self._config(
- '''
- <resource
- factory="zope.component.testfiles.views.R1"
- type="zope.component.testfiles.views.IR"
- />
- ''')
+ v = queryAdapter(Request(IR), IV, name=u'test')
+ self.assertEqual(v, None)
- v = queryAdapter(Request(IR), IV)
- self.assertEqual(v, None)
+ self._config(
+ '''
+ <resource
+ name="test"
+ factory="zope.component.testfiles.views.R1"
+ type="zope.component.testfiles.views.IR"
+ provides="zope.component.testfiles.views.IV"
+ />
+ ''')
- self._config(
- '''
- <resource
- factory="zope.component.testfiles.views.R1"
- type="zope.component.testfiles.views.IR"
- provides="zope.component.testfiles.views.IV"
- />
- ''')
+ v = queryAdapter(Request(IR), IV, name=u'test')
+ self.assertEqual(v.__class__, R1)
- v = queryAdapter(Request(IR), IV)
- self.assertEqual(v.__class__, R1)
+ def testUnnamedResourceThatProvidesAnInterface(self):
+ from zope.component import queryAdapter
+ from zope.component.tests.examples import Ob3
+ from zope.component.testfiles.views import IR
+ from zope.component.testfiles.views import IV
+ from zope.component.testfiles.views import Request
+ from zope.component.testfiles.views import R1
+ ob = Ob3()
+ self.assertEqual(queryAdapter(Request(IR), IV), None)
- def testResourceUndefinedPermission(self):
- self.assertRaises(ValueError, #raised from zope.security
- self._config,
- '''
- <resource name="test"
- factory="zope.component.testfiles.views.R1"
- type="zope.component.testfiles.views.IV"
- permission="zope.UndefinedPermission"/>
- ''',
- testing=1)
+ self._config(
+ '''
+ <resource
+ factory="zope.component.testfiles.views.R1"
+ type="zope.component.testfiles.views.IR"
+ />
+ ''')
+ v = queryAdapter(Request(IR), IV)
+ self.assertEqual(v, None)
-_ZCML_TEMPLATE = """<configure
- xmlns='http://namespaces.zope.org/zope'
- i18n_domain='zope'>
- %s
- </configure>"""
+ self._config(
+ '''
+ <resource
+ factory="zope.component.testfiles.views.R1"
+ type="zope.component.testfiles.views.IR"
+ provides="zope.component.testfiles.views.IV"
+ />
+ ''')
+ v = queryAdapter(Request(IR), IV)
+ self.assertEqual(v.__class__, R1)
+ def testResourceUndefinedPermission(self):
+ self.assertRaises(ValueError, #raised from zope.security
+ self._config,
+ '''
+ <resource name="test"
+ factory="zope.component.testfiles.views.R1"
+ type="zope.component.testfiles.views.IV"
+ permission="zope.UndefinedPermission"/>
+ ''',
+ testing=1)
+
+
+ _ZCML_TEMPLATE = """<configure
+ xmlns='http://namespaces.zope.org/zope'
+ i18n_domain='zope'>
+ %s
+ </configure>"""
+
+
def _makeConfigContext():
class _Context(object):
info = 'TESTING'
@@ -1269,5 +1446,5 @@
unittest.makeSuite(Test_utility),
unittest.makeSuite(Test_interface),
unittest.makeSuite(Test_view),
- unittest.makeSuite(ResourceViewTests),
+ #unittest.makeSuite(ResourceViewTests),
))
Modified: zope.component/tseaver-test_cleanup/src/zope/component/zcml.py
===================================================================
--- zope.component/tseaver-test_cleanup/src/zope/component/zcml.py 2012-06-26 23:01:18 UTC (rev 127119)
+++ zope.component/tseaver-test_cleanup/src/zope/component/zcml.py 2012-06-26 23:01:22 UTC (rev 127120)
@@ -518,13 +518,9 @@
if ((allowed_attributes or allowed_interface)
and (not permission)):
raise ComponentConfigurationError(
- "Must use name attribute with allowed_interface or "
- "allowed_attributes"
- )
+ "'permission' required with 'allowed_interface' or "
+ "'allowed_attributes'")
- if not factory:
- raise ComponentConfigurationError("No view factory specified.")
-
if permission is not None:
checker = _checker(_context, permission,
@@ -552,7 +548,7 @@
if len(factories) == 1:
factory = factories[0]
elif len(factories) < 1:
- raise ComponentConfigurationError("No factory specified")
+ raise ComponentConfigurationError("No view factory specified")
elif len(factories) > 1 and len(for_) > 1:
raise ComponentConfigurationError(
"Can't use multiple factories and multiple for")
@@ -561,6 +557,7 @@
for f in factories[:-1]:
ob = f(ob)
return factories[-1](ob, request)
+ factory.factory = factories[0]
for_ = for_ + (type,)
@@ -570,12 +567,6 @@
args = ('registerAdapter',
factory, for_, provides, name, _context.info),
)
- if type is not None:
- _context.action(
- discriminator = None,
- callable = provideInterface,
- args = ('', type)
- )
_context.action(
discriminator = None,
More information about the checkins
mailing list