diff --git a/congressclient/openstack/common/apiclient/base.py b/congressclient/openstack/common/apiclient/base.py index f2851fa..4e0b5e3 100644 --- a/congressclient/openstack/common/apiclient/base.py +++ b/congressclient/openstack/common/apiclient/base.py @@ -506,6 +506,9 @@ class Resource(object): return self.id == other.id return self._info == other._info + def __ne__(self, other): + return not self == other + def is_loaded(self): return self._loaded diff --git a/congressclient/openstack/common/apiclient/fake_client.py b/congressclient/openstack/common/apiclient/fake_client.py index 1f2e8c6..e9e3fac 100644 --- a/congressclient/openstack/common/apiclient/fake_client.py +++ b/congressclient/openstack/common/apiclient/fake_client.py @@ -75,6 +75,9 @@ class TestResponse(requests.Response): self.headers == other.headers and self._content == other._content) + def __ne__(self, other): + return not self.__eq__(other) + class FakeHTTPClient(client.HTTPClient): diff --git a/congressclient/tests/test_base.py b/congressclient/tests/test_base.py new file mode 100644 index 0000000..b14521f --- /dev/null +++ b/congressclient/tests/test_base.py @@ -0,0 +1,37 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from congressclient.openstack.common.apiclient import base as common_base +from congressclient.tests import utils + + +class BaseTest(utils.TestCase): + + def test_resource_repr(self): + r = common_base.Resource(None, dict(foo="bar", baz="spam")) + self.assertEqual(repr(r), "") + + def test_eq(self): + # Two resources of the same type with the same id: equal + r1 = common_base.Resource(None, {'id': 1, 'name': 'hi'}) + r2 = common_base.Resource(None, {'id': 1, 'name': 'hello'}) + self.assertEqual(r1, r2) + + # Two resources with no ID: equal if their info is equal + r1 = common_base.Resource(None, {'name': 'joe', 'age': 12}) + r2 = common_base.Resource(None, {'name': 'joe', 'age': 12}) + self.assertEqual(r1, r2) + + # Two resources of different types: never equal + r1 = common_base.Resource(None, {'id': 1}) + self.assertNotEqual(r1, object()) + self.assertNotEqual(r1, {'id': 1})