diff --git a/graphene/core/fields.py b/graphene/core/fields.py index b6b34334..bdff8cc1 100644 --- a/graphene/core/fields.py +++ b/graphene/core/fields.py @@ -134,7 +134,8 @@ class Field(object): def __eq__(self, other): # Needed for @total_ordering if isinstance(other, Field): - return self.creation_counter == other.creation_counter + return self.creation_counter == other.creation_counter and \ + self.object_type == other.object_type return NotImplemented def __lt__(self, other): @@ -152,6 +153,8 @@ class Field(object): obj = Empty() obj.__class__ = self.__class__ obj.__dict__ = self.__dict__.copy() + if self.field_type == 'self': + obj.field_type = self.object_type return obj diff --git a/tests/core/test_types.py b/tests/core/test_types.py index facc2a88..9ce272e4 100644 --- a/tests/core/test_types.py +++ b/tests/core/test_types.py @@ -43,7 +43,7 @@ def test_interface(): assert isinstance(object_type, GraphQLInterfaceType) assert Character._meta.type_name == 'core_Character' assert object_type.description == 'Character description' - assert object_type.get_fields().keys() == ['name'] + assert list(object_type.get_fields().keys()) == ['name'] # assert object_type.get_fields() == { # 'name': Character._meta.fields_map['name'].internal_field(schema)} @@ -59,7 +59,7 @@ def test_object_type(): assert Human._meta.type_name == 'core_Human' assert isinstance(object_type, GraphQLObjectType) assert object_type.description == 'Human description' - assert object_type.get_fields().keys() == ['name', 'friends'] + assert list(object_type.get_fields().keys()) == ['name', 'friends'] # assert object_type.get_fields() == {'name': Human._meta.fields_map['name'].internal_field( # schema), 'friends': Human._meta.fields_map['friends'].internal_field(schema)} assert object_type.get_interfaces() == [Character.internal_type(schema)]