From f68682e15382520f47da95dd5ecb54b49ac1a6a8 Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Tue, 29 Aug 2017 19:53:24 -0700 Subject: [PATCH] Improved mutation examples --- examples/complex_example.py | 40 +++++++++++++++++++++++++-- graphene/types/tests/test_mutation.py | 4 +-- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/examples/complex_example.py b/examples/complex_example.py index 492e6a19..f9c8dbc4 100644 --- a/examples/complex_example.py +++ b/examples/complex_example.py @@ -5,6 +5,10 @@ class GeoInput(graphene.InputObjectType): lat = graphene.Float(required=True) lng = graphene.Float(required=True) + @property + def latlng(self): + return "({},{})".format(self.lat, self.lng) + class Address(graphene.ObjectType): latlng = graphene.String() @@ -14,10 +18,25 @@ class Query(graphene.ObjectType): address = graphene.Field(Address, geo=GeoInput(required=True)) def resolve_address(self, info, geo): - return Address(latlng="({},{})".format(geo.get('lat'), geo.get('lng'))) + return Address(latlng=geo.latlng) -schema = graphene.Schema(query=Query) +class CreateAddress(graphene.Mutation): + + class Arguments: + geo = GeoInput(required=True) + + Output = Address + + def mutate(self, info, geo): + return Address(latlng=geo.latlng) + + +class Mutation(graphene.ObjectType): + create_address = CreateAddress.Field() + + +schema = graphene.Schema(query=Query, mutation=Mutation) query = ''' query something{ address(geo: {lat:32.2, lng:12}) { @@ -25,6 +44,13 @@ query = ''' } } ''' +mutation = ''' + mutation addAddress{ + createAddress(geo: {lat:32.2, lng:12}) { + latlng + } + } +''' def test_query(): @@ -37,6 +63,16 @@ def test_query(): } +def test_mutation(): + result = schema.execute(mutation) + assert not result.errors + assert result.data == { + 'createAddress': { + 'latlng': "(32.2,12.0)", + } + } + + if __name__ == '__main__': result = schema.execute(query) print(result.data['address']['latlng']) diff --git a/graphene/types/tests/test_mutation.py b/graphene/types/tests/test_mutation.py index b4d65dcc..69e14b0c 100644 --- a/graphene/types/tests/test_mutation.py +++ b/graphene/types/tests/test_mutation.py @@ -54,7 +54,7 @@ def test_mutation_custom_output_type(): class CreateUser(Mutation): - class Input: + class Arguments: name = String() Output = User @@ -73,7 +73,7 @@ def test_mutation_custom_output_type(): def test_mutation_execution(): class CreateUser(Mutation): - class Input: + class Arguments: name = String() dynamic = Dynamic(lambda: String()) dynamic_none = Dynamic(lambda: None)