diff --git a/muranoclient/common/base.py b/muranoclient/common/base.py index 1decb49c..14791730 100644 --- a/muranoclient/common/base.py +++ b/muranoclient/common/base.py @@ -202,8 +202,6 @@ class Resource(object): def __eq__(self, other): if not isinstance(other, self.__class__): return False - if hasattr(self, 'id') and hasattr(other, 'id'): - return self.id == other.id return self._info == other._info def is_loaded(self): diff --git a/muranoclient/openstack/common/apiclient/base.py b/muranoclient/openstack/common/apiclient/base.py index 1dc3397d..bc56106e 100644 --- a/muranoclient/openstack/common/apiclient/base.py +++ b/muranoclient/openstack/common/apiclient/base.py @@ -511,8 +511,6 @@ class Resource(object): # two resources of different types are not equal if not isinstance(other, self.__class__): return False - if hasattr(self, 'id') and hasattr(other, 'id'): - return self.id == other.id return self._info == other._info def is_loaded(self): diff --git a/muranoclient/tests/unit/test_base.py b/muranoclient/tests/unit/test_base.py new file mode 100644 index 00000000..e438c622 --- /dev/null +++ b/muranoclient/tests/unit/test_base.py @@ -0,0 +1,46 @@ +# Copyright 2015 Huawei. +# All Rights Reserved. +# +# 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. + +import testtools + +from muranoclient.common import base +from muranoclient.v1 import packages + + +class BaseTest(testtools.TestCase): + + def test_two_resources_with_same_id_are_not_equal(self): + # Two resources with same ID: never equal if their info is not equal + r1 = base.Resource(None, {'id': 1, 'name': 'hi'}) + r2 = base.Resource(None, {'id': 1, 'name': 'hello'}) + self.assertNotEqual(r1, r2) + + def test_two_resources_with_same_id_and_info_are_equal(self): + # Two resources with same ID: equal if their info is equal + r1 = base.Resource(None, {'id': 1, 'name': 'hello'}) + r2 = base.Resource(None, {'id': 1, 'name': 'hello'}) + self.assertEqual(r1, r2) + + def test_two_resources_with_diff_type_are_not_equal(self): + # Two resoruces of different types: never equal + r1 = base.Resource(None, {'id': 1}) + r2 = packages.Package(None, {'id': 1}) + self.assertNotEqual(r1, r2) + + def test_two_resources_with_no_id_are_equal(self): + # Two resources with no ID: equal if their info is equal + r1 = base.Resource(None, {'name': 'joe', 'age': 12}) + r2 = base.Resource(None, {'name': 'joe', 'age': 12}) + self.assertEqual(r1, r2)