%PDF- %PDF-
Direktori : /lib/python3/dist-packages/zope/component/tests/ |
Current File : //lib/python3/dist-packages/zope/component/tests/test_globalregistry.py |
############################################################################## # # Copyright (c) 2012 Zope Foundation and Contributors. # All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # ############################################################################## """ Tests for z.c._api """ import unittest class Test_getGlobalSiteManager(unittest.TestCase): def _callFUT(self): from zope.component.globalregistry import getGlobalSiteManager return getGlobalSiteManager() def test_gsm_is_IComponentLookup(self): from zope.component.globalregistry import base from zope.component.interfaces import IComponentLookup gsm = self._callFUT() self.assertTrue(gsm is base) self.assertTrue(IComponentLookup.providedBy(gsm)) def test_gsm_is_singleton(self): gsm = self._callFUT() self.assertTrue(self._callFUT() is gsm) def test_gsm_pickling(self): from zope.component._compat import _pickle gsm = self._callFUT() dumped = _pickle.dumps(gsm) loaded = _pickle.loads(dumped) self.assertTrue(loaded is gsm) dumped_utilities = _pickle.dumps(gsm.utilities) loaded_utilities = _pickle.loads(dumped_utilities) self.assertTrue(loaded_utilities is gsm.utilities) dumped_adapters = _pickle.dumps(gsm.adapters) loaded_adapters = _pickle.loads(dumped_adapters) self.assertTrue(loaded_adapters is gsm.adapters) class Test_provideUtility(unittest.TestCase): from zope.component.testing import setUp, tearDown def _callFUT(self, *args, **kw): from zope.component.globalregistry import provideUtility return provideUtility(*args, **kw) def test_anonymous_no_provides(self): from zope.interface import Interface from zope.interface import implementer from zope.component.globalregistry import getGlobalSiteManager class IFoo(Interface): pass @implementer(IFoo) class Foo(object): pass foo = Foo() self._callFUT(foo) gsm = getGlobalSiteManager() self.assertTrue(gsm.getUtility(IFoo, '') is foo) def test_named_w_provides(self): from zope.interface import Interface from zope.component.globalregistry import getGlobalSiteManager class IFoo(Interface): pass class Foo(object): pass foo = Foo() self._callFUT(foo, IFoo, 'named') gsm = getGlobalSiteManager() self.assertTrue(gsm.getUtility(IFoo, 'named') is foo) class Test_provideAdapter(unittest.TestCase): from zope.component.testing import setUp, tearDown def _callFUT(self, *args, **kw): from zope.component.globalregistry import provideAdapter return provideAdapter(*args, **kw) def test_anonymous_no_provides_no_adapts(self): from zope.interface import Interface from zope.interface import implementer from zope.component.globalregistry import getGlobalSiteManager from zope.component._api import adapter class IFoo(Interface): pass class IBar(Interface): pass @implementer(IFoo) class Foo(object): pass @adapter(IFoo) @implementer(IBar) class Bar(object): def __init__(self, context): self.context = context self._callFUT(Bar) gsm = getGlobalSiteManager() foo = Foo() adapted = gsm.getAdapter(foo, IBar) self.assertTrue(isinstance(adapted, Bar)) self.assertTrue(adapted.context is foo) def test_named_w_provides_w_adapts(self): from zope.interface import Interface from zope.interface import implementer from zope.component.globalregistry import getGlobalSiteManager class IFoo(Interface): pass class IBar(Interface): pass @implementer(IFoo) class Foo(object): pass class Bar(object): def __init__(self, context): self.context = context self._callFUT(Bar, (IFoo,), IBar, 'test') gsm = getGlobalSiteManager() foo = Foo() adapted = gsm.getAdapter(foo, IBar, name='test') self.assertTrue(isinstance(adapted, Bar)) self.assertTrue(adapted.context is foo) class Test_provideSubscriptionAdapter(unittest.TestCase): from zope.component.testing import setUp, tearDown def _callFUT(self, *args, **kw): from zope.component.globalregistry import provideSubscriptionAdapter return provideSubscriptionAdapter(*args, **kw) def test_no_provides_no_adapts(self): from zope.interface import Interface from zope.interface import implementer from zope.component.globalregistry import getGlobalSiteManager from zope.component._api import adapter class IFoo(Interface): pass class IBar(Interface): pass @implementer(IFoo) class Foo(object): pass @adapter(IFoo) @implementer(IBar) class Bar(object): def __init__(self, context): self.context = context self._callFUT(Bar) gsm = getGlobalSiteManager() foo = Foo() adapted = gsm.subscribers((foo,), IBar) self.assertEqual(len(adapted), 1) self.assertTrue(isinstance(adapted[0], Bar)) self.assertTrue(adapted[0].context is foo) def test_w_provides_w_adapts(self): from zope.interface import Interface from zope.interface import implementer from zope.component.globalregistry import getGlobalSiteManager class IFoo(Interface): pass class IBar(Interface): pass @implementer(IFoo) class Foo(object): pass class Bar(object): def __init__(self, context): self.context = context self._callFUT(Bar, (IFoo,), IBar) gsm = getGlobalSiteManager() foo = Foo() adapted = gsm.subscribers((foo,), IBar) self.assertEqual(len(adapted), 1) self.assertTrue(isinstance(adapted[0], Bar)) self.assertTrue(adapted[0].context is foo) class Test_provideHandler(unittest.TestCase): from zope.component.testing import setUp, tearDown def _callFUT(self, *args, **kw): from zope.component.globalregistry import provideHandler return provideHandler(*args, **kw) 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 @adapter(IFoo) def _handler(context): assert 0, "DON'T GO HERE" 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_w_adapts(self): from zope.interface import Interface from zope.component.globalregistry import getGlobalSiteManager class IFoo(Interface): pass def _handler(context): assert 0, "DON'T GO HERE" 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_suite(): return unittest.TestSuite(( unittest.makeSuite(Test_getGlobalSiteManager), unittest.makeSuite(Test_provideUtility), unittest.makeSuite(Test_provideAdapter), unittest.makeSuite(Test_provideSubscriptionAdapter), unittest.makeSuite(Test_provideHandler), ))