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:
try:
val = kwargs.pop(name)
val = kwargs.pop(name, None)
setattr(self, name, val)
except KeyError:
pass

View File

@ -105,3 +105,31 @@ def test_mutation_execution():
'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 ..unmountedtype import UnmountedType
from ..structures import NonNull
from ..scalars import String
from ..schema import Schema
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.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,
}
}