summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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