Adds __eq__ and test of it

This commit is contained in:
Justin Black 2020-04-12 15:39:33 -07:00
parent 49fcf9f2e6
commit c5fcb52845
2 changed files with 39 additions and 0 deletions

View File

@ -118,6 +118,11 @@ class ObjectType(BaseType, metaclass=ObjectTypeMeta):
**kwargs (Dict[str: Any]): Keyword arguments to use for Field values of value object
"""
def __eq__(self, other):
if isinstance(other, self.__class__):
return self.__dict__ == other.__dict__
return False
@classmethod
def __init_subclass_with_meta__(
cls,

View File

@ -35,6 +35,40 @@ class MyScalar(UnmountedType):
return MyType
def test_equality():
# instances of object with no properties are equal
class NoPropertiesObject(ObjectType):
pass
my_obj = NoPropertiesObject()
assert my_obj == NoPropertiesObject()
# different classes are unequal
class OtherNoPropertiesObject(ObjectType):
pass
assert NoPropertiesObject() != OtherNoPropertiesObject()
# compare instances of the same simple class
class MyObjectType(ObjectType):
prop = String()
my_obj = MyObjectType(prop="a")
assert my_obj == MyObjectType(prop="a")
assert my_obj != MyObjectType(prop="b")
# complex instances of the same class
# class contains another class in a field
class ParentObjectType(ObjectType):
child = Field(MyObjectType)
my_obj = ParentObjectType(child=MyObjectType(prop="a"))
assert my_obj == ParentObjectType(child=MyObjectType(prop="a"))
assert my_obj != ParentObjectType(child=MyObjectType(prop="b"))
def test_generate_objecttype():
class MyObjectType(ObjectType):
"""Documentation"""