summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2012-04-12 21:35:43 -0500
committerMichael Merickel <michael@merickel.org>2012-04-12 21:35:43 -0500
commitb940e4f6f064a4b96ba1119d2fd349b63bfb77a3 (patch)
treee99a25edd4f4e96ef8c1c65e27f7996ad5eb15bf
parentd7f34bdaefb855d811a78dfdf813b4e0d9268d8c (diff)
downloadpyramid-b940e4f6f064a4b96ba1119d2fd349b63bfb77a3.tar.gz
pyramid-b940e4f6f064a4b96ba1119d2fd349b63bfb77a3.tar.bz2
pyramid-b940e4f6f064a4b96ba1119d2fd349b63bfb77a3.zip
fixed coverage for request properties
-rw-r--r--pyramid/config/factories.py13
-rw-r--r--pyramid/tests/test_config/test_factories.py38
2 files changed, 27 insertions, 24 deletions
diff --git a/pyramid/config/factories.py b/pyramid/config/factories.py
index 6c4f00784..6f069b3d9 100644
--- a/pyramid/config/factories.py
+++ b/pyramid/config/factories.py
@@ -1,5 +1,6 @@
from zope.interface import implementer
+from pyramid.compat import iteritems_
from pyramid.config.util import action_method
from pyramid.interfaces import (
@@ -98,8 +99,8 @@ class FactoriesConfiguratorMixin(object):
def set_request_method(self,
callable=None,
name=None,
- property=None,
- reify=None):
+ property=False,
+ reify=False):
""" Add a property or method to the request object.
When adding a method to the request, ``callable`` may be any
@@ -156,7 +157,7 @@ class FactoriesConfiguratorMixin(object):
(INewRequest,))
plist = exts.descriptors if property else exts.methods
- plist.append((name, callable))
+ plist[name] = callable
if callable is None:
self.action(('request extensions', name), None)
@@ -195,12 +196,12 @@ class FactoriesConfiguratorMixin(object):
@implementer(IRequestExtensions)
class _RequestExtensions(object):
def __init__(self):
- self.descriptors = []
- self.methods = []
+ self.descriptors = {}
+ self.methods = {}
def _set_request_extensions(event):
request = event.request
exts = request.registry.queryUtility(IRequestExtensions)
- for name, method in exts.methods:
+ for name, method in iteritems_(exts.methods):
setattr(request, name, method)
request._set_properties(exts.descriptors)
diff --git a/pyramid/tests/test_config/test_factories.py b/pyramid/tests/test_config/test_factories.py
index 1dfeda34c..596f9796d 100644
--- a/pyramid/tests/test_config/test_factories.py
+++ b/pyramid/tests/test_config/test_factories.py
@@ -68,39 +68,40 @@ class TestFactoriesMixin(unittest.TestCase):
dummyfactory)
def test_set_request_property_with_callable(self):
- from pyramid.interfaces import IRequestProperties
+ from pyramid.interfaces import IRequestExtensions
config = self._makeOne(autocommit=True)
callable = lambda x: None
config.set_request_property(callable, name='foo')
- plist = config.registry.getUtility(IRequestProperties)
- self.assertEqual(set(p[0] for p in plist), set(['foo']))
+ exts = config.registry.getUtility(IRequestExtensions)
+ self.assertTrue('foo' in exts.descriptors)
def test_set_request_property_with_unnamed_callable(self):
- from pyramid.interfaces import IRequestProperties
+ from pyramid.interfaces import IRequestExtensions
config = self._makeOne(autocommit=True)
def foo(self): pass
config.set_request_property(foo, reify=True)
- plist = config.registry.getUtility(IRequestProperties)
- self.assertEqual(set(p[0] for p in plist), set(['foo']))
+ exts = config.registry.getUtility(IRequestExtensions)
+ self.assertTrue('foo' in exts.descriptors)
def test_set_request_property_with_property(self):
- from pyramid.interfaces import IRequestProperties
+ from pyramid.interfaces import IRequestExtensions
config = self._makeOne(autocommit=True)
callable = property(lambda x: None)
config.set_request_property(callable, name='foo')
- plist = config.registry.getUtility(IRequestProperties)
- self.assertEqual(set(p[0] for p in plist), set(['foo']))
+ exts = config.registry.getUtility(IRequestExtensions)
+ self.assertTrue('foo' in exts.descriptors)
def test_set_multiple_request_properties(self):
- from pyramid.interfaces import IRequestProperties
+ from pyramid.interfaces import IRequestExtensions
config = self._makeOne()
def foo(self): pass
bar = property(lambda x: None)
config.set_request_property(foo, reify=True)
config.set_request_property(bar, name='bar')
config.commit()
- plist = config.registry.getUtility(IRequestProperties)
- self.assertEqual(set(p[0] for p in plist), set(['foo', 'bar']))
+ exts = config.registry.getUtility(IRequestExtensions)
+ self.assertTrue('foo' in exts.descriptors)
+ self.assertTrue('bar' in exts.descriptors)
def test_set_multiple_request_properties_conflict(self):
from pyramid.exceptions import ConfigurationConflictError
@@ -124,19 +125,20 @@ class TestFactoriesMixin(unittest.TestCase):
request = DummyRequest(config.registry)
event = Event()
config.registry.notify(event)
- plist = event.request.plist
- self.assertEqual(set(p[0] for p in plist), set(['foo', 'bar']))
+ exts = event.request.extensions
+ self.assertTrue('foo' in exts[0])
+ self.assertTrue('bar' in exts[1])
class DummyRequest(object):
- plist = None
+ extensions = None
def __init__(self, registry):
self.registry = registry
def _set_properties(self, properties):
- if self.plist is None:
- self.plist = []
- self.plist.extend(properties)
+ if self.extensions is None:
+ self.extensions = []
+ self.extensions.extend(properties)