Improved object container initialization. Fixed #585

This commit is contained in:
Syrus Akbary 2017-11-02 21:57:10 -07:00
parent 045d5fffbe
commit 3ee94131ae
3 changed files with 57 additions and 1 deletions

View File

@ -81,7 +81,7 @@ class ObjectType(BaseType):
for name, field in fields_iter: for name, field in fields_iter:
try: try:
val = kwargs.pop(name) val = kwargs.pop(name, None)
setattr(self, name, val) setattr(self, name, val)
except KeyError: except KeyError:
pass pass

View File

@ -105,3 +105,31 @@ def test_mutation_execution():
'dynamic': 'dynamic', 'dynamic': 'dynamic',
} }
} }
def test_mutation_no_fields_output():
class CreateUser(Mutation):
name = String()
def mutate(self, info):
return CreateUser()
class Query(ObjectType):
a = String()
class MyMutation(ObjectType):
create_user = CreateUser.Field()
schema = Schema(query=Query, mutation=MyMutation)
result = schema.execute(''' mutation mymutation {
createUser {
name
}
}
''')
assert not result.errors
assert result.data == {
'createUser': {
'name': None,
}
}

View File

@ -5,6 +5,8 @@ from ..interface import Interface
from ..objecttype import ObjectType from ..objecttype import ObjectType
from ..unmountedtype import UnmountedType from ..unmountedtype import UnmountedType
from ..structures import NonNull from ..structures import NonNull
from ..scalars import String
from ..schema import Schema
class MyType(Interface): class MyType(Interface):
@ -224,3 +226,29 @@ def test_objecttype_with_possible_types_and_is_type_of_should_raise():
'MyObjectType.Meta.possible_types will cause type collision with ' 'MyObjectType.Meta.possible_types will cause type collision with '
'MyObjectType.is_type_of. Please use one or other.' 'MyObjectType.is_type_of. Please use one or other.'
) )
def test_objecttype_no_fields_output():
class User(ObjectType):
name = String()
class Query(ObjectType):
user = Field(User)
def resolve_user(self, info):
return User()
schema = Schema(query=Query)
result = schema.execute(''' query basequery {
user {
name
}
}
''')
assert not result.errors
assert result.data == {
'user': {
'name': None,
}
}