Merge "Fix Resource.__eq__ mismatch semantics of object equal"
This commit is contained in:
commit
26df6c3c37
@ -505,8 +505,6 @@ class Resource(object):
|
|||||||
# two resources of different types are not equal
|
# two resources of different types are not equal
|
||||||
if not isinstance(other, self.__class__):
|
if not isinstance(other, self.__class__):
|
||||||
return False
|
return False
|
||||||
if hasattr(self, 'id') and hasattr(other, 'id'):
|
|
||||||
return self.id == other.id
|
|
||||||
return self._info == other._info
|
return self._info == other._info
|
||||||
|
|
||||||
def is_loaded(self):
|
def is_loaded(self):
|
||||||
|
@ -79,6 +79,30 @@ class ResourceTest(test_base.BaseTestCase):
|
|||||||
r = HumanResource(None, {"name": None})
|
r = HumanResource(None, {"name": None})
|
||||||
self.assertIsNone(r.human_id)
|
self.assertIsNone(r.human_id)
|
||||||
|
|
||||||
|
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 = HumanResource(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)
|
||||||
|
|
||||||
|
|
||||||
class BaseManagerTestCase(test_base.BaseTestCase):
|
class BaseManagerTestCase(test_base.BaseTestCase):
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user