def test_cant_assign_implementation(self): from zope.component.hookable import hookable foo = fails_if_called(self) bar = fails_if_called(self) hooked = hookable(foo) with self.assertRaises((TypeError, AttributeError)): hooked.implementation = bar
def test_sethook(self): from zope.component.hookable import hookable foo = fails_if_called(self) bar = fails_if_called(self) hooked = hookable(foo) hooked.sethook(bar) self.assertTrue(hooked.original is foo) self.assertTrue(hooked.implementation is bar)
def test_ctor_defaults(self): func = fails_if_called(self) factory = self._makeOne(func) self.assertEqual(factory._callable, func) self.assertEqual(factory.title, '') self.assertEqual(factory.description, '') self.assertEqual(factory._interfaces, None)
def test_w_factory_w_provides(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 _handler = fails_if_called(self) _cfg_ctx = _makeConfigContext() self._callFUT(_cfg_ctx, (Interface,), Foo, provides=IFoo) 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'], None) self.assertEqual(action['args'][0], 'registerSubscriptionAdapter') self.assertEqual(action['args'][1], Foo) 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_no_factory_w_handler_w_provides(self): from zope.interface import Interface class IFoo(Interface): pass _handler = fails_if_called(self) _cfg_ctx = _makeConfigContext() self.assertRaises(TypeError, self._callFUT, _cfg_ctx, (Interface,), handler=_handler, provides=IFoo)
def test_w_factory_w_handler(self): from zope.interface import Interface class Foo(object): pass _handler = fails_if_called(self) _cfg_ctx = _makeConfigContext() self.assertRaises(TypeError, self._callFUT, _cfg_ctx, (Interface,), Foo, handler=_handler)
def test_getInterfaces_implicit(self): from zope.interface import Interface from zope.interface import implementer class IBaz(Interface): pass _callable = implementer(IBaz)(fails_if_called(self)) factory = self._makeOne(_callable) spec = factory.getInterfaces() self.assertEqual(list(spec), [IBaz])
def test_w_adapts(self): from zope.interface import Interface from zope.component.globalregistry import getGlobalSiteManager class IFoo(Interface): pass _handler = fails_if_called(self) self._callFUT(_handler, (IFoo,)) gsm = getGlobalSiteManager() regs = list(gsm.registeredHandlers()) self.assertEqual(len(regs), 1) hr = regs[0] self.assertEqual(list(hr.required), [IFoo]) self.assertEqual(hr.name, '') self.assertTrue(hr.factory is _handler)
def test_w_adapts(self): from zope.interface import Interface from zope.component.globalregistry import getGlobalSiteManager class IFoo(Interface): pass _handler = fails_if_called(self) self._callFUT(_handler, (IFoo, )) gsm = getGlobalSiteManager() regs = list(gsm.registeredHandlers()) self.assertEqual(len(regs), 1) hr = regs[0] self.assertEqual(list(hr.required), [IFoo]) self.assertEqual(hr.name, '') self.assertTrue(hr.factory is _handler)
def test_getInterfaces_explicit(self): from zope.interface import Interface from zope.interface import implementer class IFoo(Interface): pass class IBar(Interface): pass class IBaz(Interface): pass _callable = fails_if_called(self) _callable.__name__ = '_callable' _callable = implementer(IBaz)(_callable) factory = self._makeOne(_callable, interfaces=(IFoo, IBar)) spec = factory.getInterfaces() self.assertEqual(spec.__name__, '_callable') self.assertEqual(list(spec), [IFoo, IBar])
def test_no_adapts(self): from zope.interface import Interface from zope.interface import implementer from zope.interface import providedBy from zope.component.globalregistry import getGlobalSiteManager from zope.component._declaration import adapter class IFoo(Interface): pass @implementer(IFoo) class Foo(object): pass _handler = adapter(IFoo)(fails_if_called(self)) self._callFUT(_handler) gsm = getGlobalSiteManager() regs = list(gsm.registeredHandlers()) self.assertEqual(len(regs), 1) hr = regs[0] self.assertEqual(list(hr.required), list(providedBy(Foo()))) self.assertEqual(hr.name, '') self.assertTrue(hr.factory is _handler)
def test_no_factory_w_handler_no_provides(self): from zope.interface import Interface from zope.component.interface import provideInterface from zope.component.zcml import handler _handler = fails_if_called(self) _cfg_ctx = _makeConfigContext() self._callFUT(_cfg_ctx, (Interface,), handler=_handler) self.assertEqual(len(_cfg_ctx._actions), 2) 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'], None) self.assertEqual(action['args'][0], 'registerHandler') self.assertEqual(action['args'][1], _handler) self.assertEqual(action['args'][2], (Interface,)) self.assertEqual(action['args'][3], '') self.assertEqual(action['args'][4], 'TESTING') # Register the required interface(s) 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))
def test_no_adapts(self): from zope.interface import Interface from zope.interface import implementer from zope.interface import providedBy from zope.component.globalregistry import getGlobalSiteManager from zope.component._api import adapter class IFoo(Interface): pass @implementer(IFoo) class Foo(object): pass _handler = adapter(IFoo)(fails_if_called(self)) self._callFUT(_handler) gsm = getGlobalSiteManager() regs = list(gsm.registeredHandlers()) self.assertEqual(len(regs), 1) hr = regs[0] self.assertEqual(list(hr.required), list(providedBy(Foo()))) self.assertEqual(hr.name, '') self.assertTrue(hr.factory is _handler)
def test_ctor_extra_arg_miss(self): from zope.component.hookable import hookable foo = fails_if_called(self) self.assertRaises(TypeError, hookable, foo, nonesuch=foo)
def test_cant_delete_original(self): from zope.component.hookable import hookable foo = fails_if_called(self) hooked = hookable(foo) with self.assertRaises((TypeError, AttributeError)): del hooked.original
class Foo(object): __conform__ = fails_if_called(self, arguments=False)
class _Context(object): bar = fails_if_called(self)
class _Factory(object): __slots__ = ('one', ) bar = fails_if_called(self)
class _Factory(object): bar = fails_if_called(self)
class _Registration(object): factory = fails_if_called(self)
class _Registration(object): handler = fails_if_called(self)
class Global(object): __init__ = fails_if_called(self)
def test_ctor_expclit(self): factory = self._makeOne(fails_if_called(self), 'TITLE', 'DESCRIPTION') self.assertEqual(factory.title, 'TITLE') self.assertEqual(factory.description, 'DESCRIPTION')
def _makeOne(self, callable=None, *args, **kw): if callable is None: callable = fails_if_called(self) return self._getTargetClass()(callable, *args, **kw)