diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-06-29 08:37:08 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-06-29 08:37:08 +0000 |
commit | 9c423b43e6096c533f6bf442be93da6b635af0dd (patch) | |
tree | 7afc852f8aadcf5258f5b2797d22a6a35792613e | |
parent | 5e2e96aca049cde2717441a5a4ea8027d9eec52a (diff) | |
parent | 167ffb66f40b86ab9f8880543d5346b52a51ac9e (diff) | |
download | oslo-db-9c423b43e6096c533f6bf442be93da6b635af0dd.tar.gz |
Merge "Add __contains__ to ModelBase to fully behave like a dict"
-rw-r--r-- | oslo/db/sqlalchemy/models.py | 3 | ||||
-rw-r--r-- | tests/sqlalchemy/test_models.py | 11 |
2 files changed, 14 insertions, 0 deletions
diff --git a/oslo/db/sqlalchemy/models.py b/oslo/db/sqlalchemy/models.py index f30e9e3..682211d 100644 --- a/oslo/db/sqlalchemy/models.py +++ b/oslo/db/sqlalchemy/models.py @@ -54,6 +54,9 @@ class ModelBase(six.Iterator): def __getitem__(self, key): return getattr(self, key) + def __contains__(self, key): + return hasattr(self, key) + def get(self, key, default=None): return getattr(self, key, default) diff --git a/tests/sqlalchemy/test_models.py b/tests/sqlalchemy/test_models.py index 8c23da8..ea15532 100644 --- a/tests/sqlalchemy/test_models.py +++ b/tests/sqlalchemy/test_models.py @@ -30,6 +30,7 @@ class ModelBaseTest(test_base.DbTestCase): def test_modelbase_has_dict_methods(self): dict_methods = ('__getitem__', '__setitem__', + '__contains__', '__iter__', 'get', 'next', @@ -51,6 +52,16 @@ class ModelBaseTest(test_base.DbTestCase): for key in h.keys(): self.assertEqual(mb[key], h[key]) + def test_modelbase_contains(self): + mb = models.ModelBase() + h = {'a': '1', 'b': '2'} + mb.update(h) + for key in h.keys(): + # Test 'in' syntax (instead of using .assertIn) + self.assertTrue(key in mb) + + self.assertFalse('non-existent-key' in mb) + def test_modelbase_iteritems(self): self.skipTest("Requires DB") mb = models.ModelBase() |