Skip to content

Commit 077b18a

Browse files
committed
test: Add test_query.test_should_self_reference
1 parent 3796484 commit 077b18a

File tree

3 files changed

+41
-18
lines changed

3 files changed

+41
-18
lines changed

graphene_mongo/tests/models.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class Reporter(Document):
4646
meta = {'collection': 'test_repoter'}
4747

4848
first_name = StringField(required=True)
49-
last_name = StringField(requred=True)
49+
last_name = StringField(required=True)
5050
email = EmailField()
5151
articles = ListField(ReferenceField(Article))
5252
# FIXME
@@ -55,3 +55,9 @@ class Reporter(Document):
5555
# custom_map = MapField(field=StringField())
5656
awards = ListField(StringField())
5757

58+
59+
class Player(Document):
60+
first_name = StringField(required=True)
61+
last_name = StringField(required=True)
62+
opponent = ReferenceField('Player')
63+

graphene_mongo/tests/test_query.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,22 @@ def setup_fixtures():
2626
article1.save()
2727
article2 = Article(headline='World', editor=editor2)
2828
article2.save()
29+
2930
reporter.articles = [article1, article2]
3031
reporter.save()
3132

32-
player = Player(first_name='Michael', last_name='Jordan')
33-
player.save()
33+
player1 = Player(first_name='Michael', last_name='Jordan')
34+
player1.save()
35+
player2 = Player(first_name='Magic', last_name='Johnson', opponent=player1)
36+
player2.save()
3437

3538
setup_fixtures()
3639

3740

41+
def get_nodes(data, key):
42+
return map(lambda edge: edge['node'], data[key]['edges'])
43+
44+
3845
def test_should_query_editor_well():
3946

4047
class Query(graphene.ObjectType):
@@ -351,11 +358,8 @@ class Query(graphene.ObjectType):
351358
schema = graphene.Schema(query=Query)
352359
result = schema.execute(query)
353360

354-
def get_nodes(data):
355-
return map(lambda edge: edge['node'], data['editors']['edges'])
356-
357361
assert not result.errors
358-
assert all(item in get_nodes(result.data) for item in get_nodes(expected))
362+
assert all(item in get_nodes(result.data, 'editors') for item in get_nodes(expected, 'editors'))
359363

360364
def test_should_custom_kwargs():
361365

@@ -408,7 +412,9 @@ class Query(graphene.ObjectType):
408412
cursor,
409413
node {
410414
firstName,
411-
415+
opponent {
416+
firstName
417+
}
412418
}
413419
}
414420
}
@@ -420,29 +426,27 @@ class Query(graphene.ObjectType):
420426
{
421427
'cursor': 'xxx',
422428
'node': {
423-
'firstName': 'Penny'
429+
'firstName': 'Michael',
430+
'opponent': None
424431
}
425432
},
426433
{
427434
'cursor': 'xxx',
428435
'node': {
429-
'firstName': 'Grant'
436+
'firstName': 'Magic',
437+
'opponent': {
438+
'firstName': 'Michael'
439+
}
430440
}
431441
}
432442
]
433443
}
434444
}
435445
schema = graphene.Schema(query=Query)
436446
result = schema.execute(query)
437-
print(result.data)
438447

439448
assert not result.errors
440-
'''
441-
def get_nodes(data):
442-
return map(lambda edge: edge['node'], data['editors']['edges'])
443-
444-
assert all(item in get_nodes(result.data) for item in get_nodes(expected))
445-
'''
449+
assert all(item in get_nodes(result.data, 'players') for item in get_nodes(expected, 'players'))
446450

447451

448452
# TODO:

graphene_mongo/tests/types.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from graphene.relay import Node
22

3-
from .models import Article, Editor, Reporter
43
from ..types import MongoengineObjectType
4+
from .models import Article, Editor, Player, Reporter
55

66

77
class EditorType(MongoengineObjectType):
@@ -13,6 +13,12 @@ class ArticleType(MongoengineObjectType):
1313
class Meta:
1414
model = Article
1515

16+
17+
class PlayerType(MongoengineObjectType):
18+
class Meta:
19+
model = Player
20+
21+
1622
class ReporterType(MongoengineObjectType):
1723
class Meta:
1824
model = Reporter
@@ -24,13 +30,20 @@ class Meta:
2430
model = Article
2531
interfaces = (Node,)
2632

33+
2734
class EditorNode(MongoengineObjectType):
2835

2936
class Meta:
3037
model = Editor
3138
interfaces = (Node,)
3239

3340

41+
class PlayerNode(MongoengineObjectType):
42+
43+
class Meta:
44+
model = Player
45+
interfaces = (Node,)
46+
3447
class ReporterNode(MongoengineObjectType):
3548

3649
class Meta:

0 commit comments

Comments
 (0)