diff --git a/graphene/relay/fields.py b/graphene/relay/fields.py index 270d907f..78f83ff0 100644 --- a/graphene/relay/fields.py +++ b/graphene/relay/fields.py @@ -71,7 +71,7 @@ class NodeTypeField(LazyField): if resolved_global_id.type == self.field_object_type._meta.type_name: return node_field.resolver(instance, args, info) - args = OrderedDict([(a.name, a) for a in node_field.args]) + args = OrderedDict(node_field.args.items()) field = Field(self.field_object_type, id=args['id'], resolve=resolver) field.contribute_to_class(self.object_type, self.field_name) diff --git a/graphene/relay/types.py b/graphene/relay/types.py index fce02aee..e3c38686 100644 --- a/graphene/relay/types.py +++ b/graphene/relay/types.py @@ -11,7 +11,7 @@ from graphene.core.fields import LazyNativeField from graphene.utils import memoize -def get_node_type(schema, obj): +def get_node_type(schema, obj, info): return obj.internal_type(schema) diff --git a/setup.py b/setup.py index ed4a04d3..66b3ae81 100644 --- a/setup.py +++ b/setup.py @@ -56,7 +56,7 @@ setup( install_requires=[ 'six>=1.10.0', 'blinker', - 'graphql-core==0.1a3', + 'graphql-core==0.1a4', 'graphql-relay==0.2.0' ], tests_require=[ diff --git a/tests/contrib_django/test_types.py b/tests/contrib_django/test_types.py index 4efabc6b..4f697c5d 100644 --- a/tests/contrib_django/test_types.py +++ b/tests/contrib_django/test_types.py @@ -66,10 +66,14 @@ def test_object_type(): fields_map = Human._meta.fields_map assert Human._meta.interface is False assert isinstance(object_type, GraphQLObjectType) - assert object_type.get_fields() == { - 'headline': fields_map['headline'].internal_field(schema), - 'id': fields_map['id'].internal_field(schema), - 'reporter': fields_map['reporter'].internal_field(schema), - 'pubDate': fields_map['pub_date'].internal_field(schema), - } + assert_equal_lists( + object_type.get_fields().keys(), + ['headline', 'id', 'reporter', 'pubDate'] + ) + # assert object_type.get_fields() == { + # 'headline': fields_map['headline'].internal_field(schema), + # 'id': fields_map['id'].internal_field(schema), + # 'reporter': fields_map['reporter'].internal_field(schema), + # 'pubDate': fields_map['pub_date'].internal_field(schema), + # } assert object_type.get_interfaces() == [DjangoNode.internal_type(schema)] diff --git a/tests/core/test_types.py b/tests/core/test_types.py index 7ca75d32..facc2a88 100644 --- a/tests/core/test_types.py +++ b/tests/core/test_types.py @@ -23,7 +23,7 @@ class Character(Interface): name = StringField() class Meta: - type_name = 'core.Character' + type_name = 'core_Character' class Human(Character): @@ -32,7 +32,7 @@ class Human(Character): friends = StringField() class Meta: - type_name = 'core.Human' + type_name = 'core_Human' schema = object() @@ -41,10 +41,11 @@ def test_interface(): object_type = Character.internal_type(schema) assert Character._meta.interface is True assert isinstance(object_type, GraphQLInterfaceType) - assert Character._meta.type_name == 'core.Character' + assert Character._meta.type_name == 'core_Character' assert object_type.description == 'Character description' - assert object_type.get_fields() == { - 'name': Character._meta.fields_map['name'].internal_field(schema)} + assert object_type.get_fields().keys() == ['name'] + # assert object_type.get_fields() == { + # 'name': Character._meta.fields_map['name'].internal_field(schema)} def test_interface_resolve_type(): @@ -55,11 +56,12 @@ def test_interface_resolve_type(): def test_object_type(): object_type = Human.internal_type(schema) assert Human._meta.interface is False - assert Human._meta.type_name == 'core.Human' + assert Human._meta.type_name == 'core_Human' assert isinstance(object_type, GraphQLObjectType) assert object_type.description == 'Human description' - 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_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)] assert Human._meta.fields_map['name'].object_type == Human @@ -69,3 +71,7 @@ def test_field_clashes(): class Droid(Character): name = IntField() assert 'clashes' in str(excinfo.value) + + +def test_fields_inherited_should_be_different(): + assert Character._meta.fields_map['name'] != Human._meta.fields_map['name'] diff --git a/tests/starwars/schema.py b/tests/starwars/schema.py index e5d97a90..e6981c0a 100644 --- a/tests/starwars/schema.py +++ b/tests/starwars/schema.py @@ -1,12 +1,13 @@ +from graphql.core.type import GraphQLEnumValue import graphene from graphene import resolve_only_args from .data import getHero, getHuman, getCharacter, getDroid, Human as _Human, Droid as _Droid Episode = graphene.Enum('Episode', dict( - NEWHOPE=4, - EMPIRE=5, - JEDI=6 + NEWHOPE=GraphQLEnumValue(4), + EMPIRE=GraphQLEnumValue(5), + JEDI=GraphQLEnumValue(6) )) @@ -47,7 +48,7 @@ class Query(graphene.ObjectType): ) class Meta: - type_name = 'core.Query' + type_name = 'core_Query' @resolve_only_args def resolve_hero(self, episode=None): diff --git a/tox.ini b/tox.ini index 1d314eb8..76baae2f 100644 --- a/tox.ini +++ b/tox.ini @@ -6,7 +6,7 @@ deps= pytest>=2.7.2 django>=1.8.0,<1.9 pytest-django - graphql-core==0.1a3 + graphql-core==0.1a4 graphql-relay==0.2.0 six blinker