summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-11-19 03:19:48 +0000
committerChris McDonough <chrism@agendaless.com>2008-11-19 03:19:48 +0000
commite8ebc2252dfaf18fde9253b3ed067fc53678227c (patch)
tree067f32fd19a7cdfab8f50152bfa23b6970aaeb2a
parent65dcf305794feffb1da33c15b5af8d4964580d72 (diff)
downloadpyramid-e8ebc2252dfaf18fde9253b3ed067fc53678227c.tar.gz
pyramid-e8ebc2252dfaf18fde9253b3ed067fc53678227c.tar.bz2
pyramid-e8ebc2252dfaf18fde9253b3ed067fc53678227c.zip
- Add ``keys``, ``items``, and ``values`` methods to
``testing.DummyModel``.
-rw-r--r--CHANGES.txt5
-rw-r--r--repoze/bfg/testing.py18
-rw-r--r--repoze/bfg/tests/test_testing.py13
3 files changed, 32 insertions, 4 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 7e8cacdab..aa6aeeadb 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,8 @@
+Next release
+
+ - Add ``keys``, ``items``, and ``values`` methods to
+ ``testing.DummyModel``.
+
0.5.0 (11/18/2008)
- Fix ModelGraphTraverser; don't try to change the ``__name__`` or
diff --git a/repoze/bfg/testing.py b/repoze/bfg/testing.py
index cec14ea06..be5026f24 100644
--- a/repoze/bfg/testing.py
+++ b/repoze/bfg/testing.py
@@ -228,6 +228,21 @@ class DummyModel:
ob = self.subs[name]
return ob
+ def values(self):
+ """ Return the values set by __setitem__ """
+ return self.subs.values()
+
+ def items(self):
+ """ Return the items set by __setitem__ """
+ return self.subs.items()
+
+ def keys(self):
+ """ Return the keys set by __setitem__ """
+ return self.subs.keys()
+
+ def __contains__(self, name):
+ return name in self.subs
+
def clone(self, __name__=_marker, __parent__=_marker, **kw):
""" Create a clone of the model object. If ``__name__`` or
``__parent__`` is passed in, use the value to override the
@@ -244,9 +259,6 @@ class DummyModel:
inst.__parent__ = __parent__
return inst
- def __contains__(self, name):
- return name in self.subs
-
class DummyRequest:
""" A dummy request object (imitates a :term:`WebOb` ``Request``
object). The named constructor arguments correspond to their
diff --git a/repoze/bfg/tests/test_testing.py b/repoze/bfg/tests/test_testing.py
index 598436c1a..aa00b5c33 100644
--- a/repoze/bfg/tests/test_testing.py
+++ b/repoze/bfg/tests/test_testing.py
@@ -287,7 +287,7 @@ class TestDummyModel(unittest.TestCase):
klass = self._getTargetClass()
return klass(name, parent, **kw)
- def test__setitem__and__getitem__(self):
+ def test__setitem__and__getitem__and__contains__(self):
class Dummy:
pass
dummy = Dummy()
@@ -297,6 +297,7 @@ class TestDummyModel(unittest.TestCase):
self.assertEqual(dummy.__parent__, model)
self.assertEqual(model['abc'], dummy)
self.assertRaises(KeyError, model.__getitem__, 'none')
+ self.failUnless('abc' in model)
def test_extra_params(self):
model = self._makeOne(foo=1)
@@ -310,6 +311,16 @@ class TestDummyModel(unittest.TestCase):
self.assertEqual(clone.__parent__, 'parent2')
self.assertEqual(clone.foo, 1)
+ def test_keys_items_values(self):
+ class Dummy:
+ pass
+ model = self._makeOne()
+ model['abc'] = Dummy()
+ model['def'] = Dummy()
+ self.assertEqual(model.values(), model.subs.values())
+ self.assertEqual(model.items(), model.subs.items())
+ self.assertEqual(model.keys(), model.subs.keys())
+
class TestDummyRequest(unittest.TestCase):
def _getTargetClass(self):
from repoze.bfg.testing import DummyRequest