From e8ebc2252dfaf18fde9253b3ed067fc53678227c Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Wed, 19 Nov 2008 03:19:48 +0000 Subject: - Add ``keys``, ``items``, and ``values`` methods to ``testing.DummyModel``. --- CHANGES.txt | 5 +++++ repoze/bfg/testing.py | 18 +++++++++++++++--- repoze/bfg/tests/test_testing.py | 13 ++++++++++++- 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 -- cgit v1.2.3