5
5
from graphene .relay import Node
6
6
7
7
from .models import Article , Editor , EmbeddedArticle , Reporter
8
+ from .utils import with_local_registry
8
9
from ..fields import MongoengineConnectionField
9
10
from ..types import MongoengineObjectType
10
11
@@ -27,6 +28,7 @@ def setup_fixtures():
27
28
setup_fixtures ()
28
29
29
30
31
+ @with_local_registry
30
32
def test_should_query_editor_well ():
31
33
class EditorType (MongoengineObjectType ):
32
34
class Meta :
@@ -73,6 +75,7 @@ def resolve_editors(self, *args, **kwargs):
73
75
assert all (item in result .data ['editors' ] for item in expected ['editors' ])
74
76
75
77
78
+ @with_local_registry
76
79
def test_should_query_reporter_well ():
77
80
class ArticleType (MongoengineObjectType ):
78
81
class Meta :
@@ -119,13 +122,17 @@ def resolve_reporter(self, *args, **kwargs):
119
122
assert not result .errors
120
123
assert dict (result .data ['reporter' ]) == expected ['reporter' ]
121
124
125
+
126
+ @with_local_registry
122
127
def test_should_node ():
123
128
class ArticleNode (MongoengineObjectType ):
129
+
124
130
class Meta :
125
131
model = Article
126
132
interfaces = (Node ,)
127
133
128
134
class ReporterNode (MongoengineObjectType ):
135
+
129
136
class Meta :
130
137
model = Reporter
131
138
interfaces = (Node ,)
@@ -180,6 +187,8 @@ def resolve_reporter(self, *args, **kwargs):
180
187
assert not result .errors
181
188
assert dict (result .data ['reporter' ]) == expected ['reporter' ]
182
189
190
+
191
+ @with_local_registry
183
192
def test_should_connection_field ():
184
193
class EditorNode (MongoengineObjectType ):
185
194
@@ -226,9 +235,62 @@ class Query(graphene.ObjectType):
226
235
assert not result .errors
227
236
assert dict (result .data ['allEditors' ]) == expected ['allEditors' ]
228
237
229
- # TODO:
238
+
239
+ @with_local_registry
230
240
def test_should_mutate_well ():
231
- pass
241
+ class ArticleNode (MongoengineObjectType ):
242
+
243
+ class Meta :
244
+ model = Article
245
+ interfaces = (Node ,)
246
+
247
+
248
+ class CreateArticle (graphene .Mutation ):
249
+
250
+ class Arguments :
251
+ headline = graphene .String ()
252
+
253
+ article = graphene .Field (ArticleNode )
254
+
255
+ def mutate (self , info , headline ):
256
+ article = Article (
257
+ headline = headline
258
+ )
259
+ article .save ()
260
+
261
+ return CreateArticle (article = article )
262
+
263
+
264
+ class Query (graphene .ObjectType ):
265
+ node = Node .Field ()
266
+
267
+
268
+ class Mutation (graphene .ObjectType ):
269
+
270
+ create_article = CreateArticle .Field ()
271
+
272
+ query = '''
273
+ mutation ArticleCreator {
274
+ createArticle(
275
+ headline: "My Article"
276
+ ) {
277
+ article {
278
+ headline
279
+ }
280
+ }
281
+ }
282
+ '''
283
+ expected = {
284
+ 'createArticle' : {
285
+ 'article' : {
286
+ 'headline' : 'My Article'
287
+ }
288
+ }
289
+ }
290
+ schema = graphene .Schema (query = Query , mutation = Mutation )
291
+ result = schema .execute (query )
292
+ assert not result .errors
293
+ assert result .data == expected
232
294
233
295
# TODO:
234
296
def test_should_filter ():
0 commit comments