Bowe Strickland
2018-10-27 323fa95deea50f49c119728fc2eeacb9e0c51241
commit | author | age
a0423a 1 import unittest
e16ab0 2 from pyramid import testing
a0423a 3
0c29cf 4
a0423a 5 class NewRequestEventTests(unittest.TestCase):
CM 6     def _getTargetClass(self):
b60bdb 7         from pyramid.events import NewRequest
0c29cf 8
a0423a 9         return NewRequest
CM 10
11     def _makeOne(self, request):
12         return self._getTargetClass()(request)
13
02ce7d 14     def test_class_conforms_to_INewRequest(self):
b60bdb 15         from pyramid.interfaces import INewRequest
a0423a 16         from zope.interface.verify import verifyClass
0c29cf 17
a0423a 18         klass = self._getTargetClass()
CM 19         verifyClass(INewRequest, klass)
e224ff 20
02ce7d 21     def test_instance_conforms_to_INewRequest(self):
b60bdb 22         from pyramid.interfaces import INewRequest
a0423a 23         from zope.interface.verify import verifyObject
0c29cf 24
a0423a 25         request = DummyRequest()
CM 26         inst = self._makeOne(request)
27         verifyObject(INewRequest, inst)
28
29     def test_ctor(self):
30         request = DummyRequest()
31         inst = self._makeOne(request)
32         self.assertEqual(inst.request, request)
33
0c29cf 34
a0423a 35 class NewResponseEventTests(unittest.TestCase):
CM 36     def _getTargetClass(self):
b60bdb 37         from pyramid.events import NewResponse
0c29cf 38
a0423a 39         return NewResponse
CM 40
eb7ea4 41     def _makeOne(self, request, response):
CM 42         return self._getTargetClass()(request, response)
a0423a 43
02ce7d 44     def test_class_conforms_to_INewResponse(self):
b60bdb 45         from pyramid.interfaces import INewResponse
a0423a 46         from zope.interface.verify import verifyClass
0c29cf 47
a0423a 48         klass = self._getTargetClass()
CM 49         verifyClass(INewResponse, klass)
e224ff 50
02ce7d 51     def test_instance_conforms_to_INewResponse(self):
b60bdb 52         from pyramid.interfaces import INewResponse
a0423a 53         from zope.interface.verify import verifyObject
0c29cf 54
eb7ea4 55         request = DummyRequest()
a0423a 56         response = DummyResponse()
eb7ea4 57         inst = self._makeOne(request, response)
a0423a 58         verifyObject(INewResponse, inst)
CM 59
60     def test_ctor(self):
eb7ea4 61         request = DummyRequest()
a0423a 62         response = DummyResponse()
eb7ea4 63         inst = self._makeOne(request, response)
CM 64         self.assertEqual(inst.request, request)
a0423a 65         self.assertEqual(inst.response, response)
CM 66
0c29cf 67
8f45be 68 class ApplicationCreatedEventTests(unittest.TestCase):
02ce7d 69     def _getTargetClass(self):
TS 70         from pyramid.events import ApplicationCreated
0c29cf 71
02ce7d 72         return ApplicationCreated
fbbe23 73
02ce7d 74     def _makeOne(self, context=object()):
TS 75         return self._getTargetClass()(context)
76
77     def test_class_conforms_to_IApplicationCreated(self):
b60bdb 78         from pyramid.interfaces import IApplicationCreated
51dcd9 79         from zope.interface.verify import verifyClass
0c29cf 80
02ce7d 81         verifyClass(IApplicationCreated, self._getTargetClass())
fbbe23 82
02ce7d 83     def test_object_conforms_to_IApplicationCreated(self):
b60bdb 84         from pyramid.interfaces import IApplicationCreated
8f45be 85         from zope.interface.verify import verifyObject
0c29cf 86
02ce7d 87         verifyObject(IApplicationCreated, self._makeOne())
0c29cf 88
49304c 89
02ce7d 90 class WSGIApplicationCreatedEventTests(ApplicationCreatedEventTests):
TS 91     def _getTargetClass(self):
92         from pyramid.events import WSGIApplicationCreatedEvent
0c29cf 93
02ce7d 94         return WSGIApplicationCreatedEvent
TS 95
96     def test_class_conforms_to_IWSGIApplicationCreatedEvent(self):
97         from pyramid.interfaces import IWSGIApplicationCreatedEvent
49304c 98         from zope.interface.verify import verifyClass
0c29cf 99
02ce7d 100         verifyClass(IWSGIApplicationCreatedEvent, self._getTargetClass())
TS 101
102     def test_object_conforms_to_IWSGIApplicationCreatedEvent(self):
103         from pyramid.interfaces import IWSGIApplicationCreatedEvent
104         from zope.interface.verify import verifyObject
0c29cf 105
02ce7d 106         verifyObject(IWSGIApplicationCreatedEvent, self._makeOne())
0c29cf 107
8f45be 108
CM 109 class ContextFoundEventTests(unittest.TestCase):
02ce7d 110     def _getTargetClass(self):
TS 111         from pyramid.events import ContextFound
0c29cf 112
02ce7d 113         return ContextFound
8f45be 114
02ce7d 115     def _makeOne(self, request=None):
TS 116         if request is None:
117             request = DummyRequest()
118         return self._getTargetClass()(request)
119
120     def test_class_conforms_to_IContextFound(self):
8f45be 121         from zope.interface.verify import verifyClass
b60bdb 122         from pyramid.interfaces import IContextFound
0c29cf 123
02ce7d 124         verifyClass(IContextFound, self._getTargetClass())
e224ff 125
02ce7d 126     def test_instance_conforms_to_IContextFound(self):
49304c 127         from zope.interface.verify import verifyObject
b60bdb 128         from pyramid.interfaces import IContextFound
0c29cf 129
02ce7d 130         verifyObject(IContextFound, self._makeOne())
0c29cf 131
02ce7d 132
TS 133 class AfterTraversalEventTests(ContextFoundEventTests):
134     def _getTargetClass(self):
135         from pyramid.events import AfterTraversal
0c29cf 136
02ce7d 137         return AfterTraversal
TS 138
139     def test_class_conforms_to_IAfterTraversal(self):
140         from zope.interface.verify import verifyClass
141         from pyramid.interfaces import IAfterTraversal
0c29cf 142
02ce7d 143         verifyClass(IAfterTraversal, self._getTargetClass())
e224ff 144
02ce7d 145     def test_instance_conforms_to_IAfterTraversal(self):
TS 146         from zope.interface.verify import verifyObject
147         from pyramid.interfaces import IAfterTraversal
0c29cf 148
02ce7d 149         verifyObject(IAfterTraversal, self._makeOne())
0c29cf 150
fbbe23 151
59428d 152 class BeforeTraversalEventTests(unittest.TestCase):
BJR 153     def _getTargetClass(self):
154         from pyramid.events import BeforeTraversal
0c29cf 155
59428d 156         return BeforeTraversal
BJR 157
158     def _makeOne(self, request=None):
159         if request is None:
160             request = DummyRequest()
161         return self._getTargetClass()(request)
162
163     def test_class_conforms_to_IBeforeTraversal(self):
164         from zope.interface.verify import verifyClass
165         from pyramid.interfaces import IBeforeTraversal
0c29cf 166
59428d 167         verifyClass(IBeforeTraversal, self._getTargetClass())
BJR 168
169     def test_instance_conforms_to_IBeforeTraversal(self):
170         from zope.interface.verify import verifyObject
171         from pyramid.interfaces import IBeforeTraversal
0c29cf 172
59428d 173         verifyObject(IBeforeTraversal, self._makeOne())
BJR 174
175
f07765 176 class TestSubscriber(unittest.TestCase):
CM 177     def setUp(self):
e49638 178         self.config = testing.setUp()
f07765 179
CM 180     def tearDown(self):
e49638 181         testing.tearDown()
f07765 182
95f766 183     def _makeOne(self, *ifaces, **predicates):
b60bdb 184         from pyramid.events import subscriber
0c29cf 185
95f766 186         return subscriber(*ifaces, **predicates)
f07765 187
2ea5c1 188     def test_register_single(self):
CM 189         from zope.interface import Interface
0c29cf 190
MM 191         class IFoo(Interface):
192             pass
193
194         class IBar(Interface):
195             pass
196
2ea5c1 197         dec = self._makeOne(IFoo)
0c29cf 198
10ddb6 199         def foo():  # pragma: no cover
0c29cf 200             pass
MM 201
2ea5c1 202         config = DummyConfigurator()
CM 203         scanner = Dummy()
204         scanner.config = config
205         dec.register(scanner, None, foo)
206         self.assertEqual(config.subscribed, [(foo, IFoo)])
207
208     def test_register_multi(self):
f07765 209         from zope.interface import Interface
0c29cf 210
MM 211         class IFoo(Interface):
212             pass
213
214         class IBar(Interface):
215             pass
216
f07765 217         dec = self._makeOne(IFoo, IBar)
0c29cf 218
10ddb6 219         def foo():  # pragma: no cover
0c29cf 220             pass
MM 221
f07765 222         config = DummyConfigurator()
CM 223         scanner = Dummy()
224         scanner.config = config
225         dec.register(scanner, None, foo)
2ea5c1 226         self.assertEqual(config.subscribed, [(foo, IFoo), (foo, IBar)])
CM 227
52a948 228     def test_register_none_means_all(self):
CM 229         from zope.interface import Interface
0c29cf 230
52a948 231         dec = self._makeOne()
0c29cf 232
10ddb6 233         def foo():  # pragma: no cover
0c29cf 234             pass
MM 235
52a948 236         config = DummyConfigurator()
CM 237         scanner = Dummy()
238         scanner.config = config
239         dec.register(scanner, None, foo)
240         self.assertEqual(config.subscribed, [(foo, Interface)])
241
2ea5c1 242     def test_register_objectevent(self):
CM 243         from zope.interface import Interface
0c29cf 244
MM 245         class IFoo(Interface):
246             pass
247
248         class IBar(Interface):
249             pass
250
2ea5c1 251         dec = self._makeOne([IFoo, IBar])
0c29cf 252
10ddb6 253         def foo():  # pragma: no cover
0c29cf 254             pass
MM 255
2ea5c1 256         config = DummyConfigurator()
CM 257         scanner = Dummy()
258         scanner.config = config
259         dec.register(scanner, None, foo)
260         self.assertEqual(config.subscribed, [(foo, [IFoo, IBar])])
f07765 261
CM 262     def test___call__(self):
263         dec = self._makeOne()
264         dummy_venusian = DummyVenusian()
265         dec.venusian = dummy_venusian
0c29cf 266
10ddb6 267         def foo():  # pragma: no cover
0c29cf 268             pass
MM 269
f07765 270         dec(foo)
0c29cf 271         self.assertEqual(
MM 272             dummy_venusian.attached, [(foo, dec.register, 'pyramid', 1)]
273         )
498158 274
MM 275     def test___call___with_venusian_args(self):
276         dec = self._makeOne(_category='foo', _depth=1)
277         dummy_venusian = DummyVenusian()
278         dec.venusian = dummy_venusian
0c29cf 279
10ddb6 280         def foo():  # pragma: no cover
0c29cf 281             pass
MM 282
498158 283         dec(foo)
0c29cf 284         self.assertEqual(
MM 285             dummy_venusian.attached, [(foo, dec.register, 'foo', 2)]
286         )
95f766 287
CM 288     def test_regsister_with_predicates(self):
289         from zope.interface import Interface
0c29cf 290
95f766 291         dec = self._makeOne(a=1)
0c29cf 292
10ddb6 293         def foo():  # pragma: no cover
0c29cf 294             pass
MM 295
95f766 296         config = DummyConfigurator()
CM 297         scanner = Dummy()
298         scanner.config = config
299         dec.register(scanner, None, foo)
0c29cf 300         self.assertEqual(config.subscribed, [(foo, Interface, {'a': 1})])
MM 301
f07765 302
a76e99 303 class TestBeforeRender(unittest.TestCase):
9a66aa 304     def _makeOne(self, system, val=None):
a76e99 305         from pyramid.events import BeforeRender
0c29cf 306
9a66aa 307         return BeforeRender(system, val)
a76e99 308
0c29cf 309     @testing.skip_on(
MM 310         'pypy'
311     )  # see https://github.com/Pylons/pyramid/issues/3237
a76e99 312     def test_instance_conforms(self):
CM 313         from zope.interface.verify import verifyObject
314         from pyramid.interfaces import IBeforeRender
0c29cf 315
a76e99 316         event = self._makeOne({})
CM 317         verifyObject(IBeforeRender, event)
318
319     def test_setitem_success(self):
5c52da 320         event = self._makeOne({})
a76e99 321         event['a'] = 1
0c29cf 322         self.assertEqual(event, {'a': 1})
a76e99 323
82efa4 324     def test_setdefault_fail(self):
5c52da 325         event = self._makeOne({})
82efa4 326         result = event.setdefault('a', 1)
CM 327         self.assertEqual(result, 1)
0c29cf 328         self.assertEqual(event, {'a': 1})
e224ff 329
82efa4 330     def test_setdefault_success(self):
5c52da 331         event = self._makeOne({})
82efa4 332         event['a'] = 1
CM 333         result = event.setdefault('a', 2)
334         self.assertEqual(result, 1)
0c29cf 335         self.assertEqual(event, {'a': 1})
a76e99 336
CM 337     def test_update_success(self):
0c29cf 338         event = self._makeOne({'a': 1})
MM 339         event.update({'b': 2})
340         self.assertEqual(event, {'a': 1, 'b': 2})
a76e99 341
CM 342     def test__contains__True(self):
0c29cf 343         system = {'a': 1}
a76e99 344         event = self._makeOne(system)
a1d395 345         self.assertTrue('a' in event)
a76e99 346
CM 347     def test__contains__False(self):
348         system = {}
349         event = self._makeOne(system)
a1d395 350         self.assertFalse('a' in event)
a76e99 351
CM 352     def test__getitem__success(self):
0c29cf 353         system = {'a': 1}
a76e99 354         event = self._makeOne(system)
CM 355         self.assertEqual(event['a'], 1)
356
357     def test__getitem__fail(self):
358         system = {}
359         event = self._makeOne(system)
360         self.assertRaises(KeyError, event.__getitem__, 'a')
361
362     def test_get_success(self):
0c29cf 363         system = {'a': 1}
a76e99 364         event = self._makeOne(system)
CM 365         self.assertEqual(event.get('a'), 1)
366
367     def test_get_fail(self):
368         system = {}
369         event = self._makeOne(system)
370         self.assertEqual(event.get('a'), None)
371
9a66aa 372     def test_rendering_val(self):
CM 373         system = {}
374         val = {}
375         event = self._makeOne(system, val)
376         self.assertTrue(event.rendering_val is val)
a76e99 377
0c29cf 378
f07765 379 class DummyConfigurator(object):
CM 380     def __init__(self):
381         self.subscribed = []
382
95f766 383     def add_subscriber(self, wrapped, ifaces, **predicates):
CM 384         if not predicates:
385             self.subscribed.append((wrapped, ifaces))
386         else:
387             self.subscribed.append((wrapped, ifaces, predicates))
f07765 388
0c29cf 389
f07765 390 class DummyRegistry(object):
CM 391     pass
0c29cf 392
e224ff 393
f07765 394 class DummyVenusian(object):
CM 395     def __init__(self):
396         self.attached = []
397
498158 398     def attach(self, wrapped, fn, category=None, depth=None):
MM 399         self.attached.append((wrapped, fn, category, depth))
f07765 400
0c29cf 401
f07765 402 class Dummy:
CM 403     pass
0c29cf 404
e224ff 405
a0423a 406 class DummyRequest:
CM 407     pass
408
0c29cf 409
a0423a 410 class DummyResponse:
CM 411     pass