1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
import unittest
from pyramid.tests.test_config import IDummy
class AdaptersConfiguratorMixinTests(unittest.TestCase):
def _makeOne(self, *arg, **kw):
from pyramid.config import Configurator
config = Configurator(*arg, **kw)
return config
def test_add_subscriber_defaults(self):
from zope.interface import implements
from zope.interface import Interface
class IEvent(Interface):
pass
class Event:
implements(IEvent)
L = []
def subscriber(event):
L.append(event)
config = self._makeOne(autocommit=True)
config.add_subscriber(subscriber)
event = Event()
config.registry.notify(event)
self.assertEqual(len(L), 1)
self.assertEqual(L[0], event)
config.registry.notify(object())
self.assertEqual(len(L), 2)
def test_add_subscriber_iface_specified(self):
from zope.interface import implements
from zope.interface import Interface
class IEvent(Interface):
pass
class Event:
implements(IEvent)
L = []
def subscriber(event):
L.append(event)
config = self._makeOne(autocommit=True)
config.add_subscriber(subscriber, IEvent)
event = Event()
config.registry.notify(event)
self.assertEqual(len(L), 1)
self.assertEqual(L[0], event)
config.registry.notify(object())
self.assertEqual(len(L), 1)
def test_add_subscriber_dottednames(self):
import pyramid.tests.test_config
from pyramid.interfaces import INewRequest
config = self._makeOne(autocommit=True)
config.add_subscriber('pyramid.tests.test_config',
'pyramid.interfaces.INewRequest')
handlers = list(config.registry.registeredHandlers())
self.assertEqual(len(handlers), 1)
handler = handlers[0]
self.assertEqual(handler.handler, pyramid.tests.test_config)
self.assertEqual(handler.required, (INewRequest,))
def test_add_object_event_subscriber(self):
from zope.interface import implements
from zope.interface import Interface
class IEvent(Interface):
pass
class Event:
object = 'foo'
implements(IEvent)
event = Event()
L = []
def subscriber(object, event):
L.append(event)
config = self._makeOne(autocommit=True)
config.add_subscriber(subscriber, (Interface, IEvent))
config.registry.subscribers((event.object, event), None)
self.assertEqual(len(L), 1)
self.assertEqual(L[0], event)
config.registry.subscribers((event.object, IDummy), None)
self.assertEqual(len(L), 1)
def test_add_response_adapter(self):
from pyramid.interfaces import IResponse
config = self._makeOne(autocommit=True)
class Adapter(object):
def __init__(self, other):
self.other = other
config.add_response_adapter(Adapter, str)
result = config.registry.queryAdapter('foo', IResponse)
self.assertTrue(result.other, 'foo')
def test_add_response_adapter_self(self):
from pyramid.interfaces import IResponse
config = self._makeOne(autocommit=True)
class Adapter(object):
pass
config.add_response_adapter(None, Adapter)
adapter = Adapter()
result = config.registry.queryAdapter(adapter, IResponse)
self.assertTrue(result is adapter)
def test_add_response_adapter_dottednames(self):
from pyramid.interfaces import IResponse
config = self._makeOne(autocommit=True)
config.add_response_adapter('pyramid.response.Response',
'types.StringType')
result = config.registry.queryAdapter('foo', IResponse)
self.assertTrue(result.body, 'foo')
|