Skip to content

Commit 312ef28

Browse files
authored
Merge pull request #135 from graphql-python/fix-wrong-list-document
Fix wrong list document
2 parents a52bd95 + 7f58482 commit 312ef28

File tree

5 files changed

+63
-8
lines changed

5 files changed

+63
-8
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ lint:
1414
@flake8 graphene_mongo
1515

1616
test: clean lint
17-
py.test --cov=graphene_mongo
17+
py.test graphene_mongo/tests --cov=graphene_mongo --cov-report=html --cov-report=term
1818

1919
register-pypitest:
2020
python setup.py register -r pypitest

graphene_mongo/fields.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020

2121
class MongoengineConnectionField(ConnectionField):
22+
2223
def __init__(self, type, *args, **kwargs):
2324
get_queryset = kwargs.pop("get_queryset", None)
2425
if get_queryset:
@@ -186,6 +187,9 @@ def get_queryset(self, model, info, **args):
186187
def default_resolver(self, _root, info, **args):
187188
args = args or {}
188189

190+
if _root is not None:
191+
args["pk__in"] = [r.pk for r in getattr(_root, info.field_name, [])]
192+
189193
connection_args = {
190194
"first": args.pop("first", None),
191195
"last": args.pop("last", None),

graphene_mongo/tests/setup.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,16 @@ def fixtures():
7878
reporter1.save()
7979

8080
Player.drop_collection()
81-
player1 = Player(first_name="Michael", last_name="Jordan")
81+
player1 = Player(
82+
first_name="Michael",
83+
last_name="Jordan",
84+
articles=[article1, article2])
8285
player1.save()
83-
player2 = Player(first_name="Magic", last_name="Johnson", opponent=player1)
86+
player2 = Player(
87+
first_name="Magic",
88+
last_name="Johnson",
89+
opponent=player1,
90+
articles=[article3])
8491
player2.save()
8592
player3 = Player(first_name="Larry", last_name="Bird", players=[player1, player2])
8693
player3.save()

graphene_mongo/tests/test_relay_query.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -976,3 +976,52 @@ class Query(graphene.ObjectType):
976976
assert json.dumps(result.data, sort_keys=True) == json.dumps(
977977
expected, sort_keys=True
978978
)
979+
980+
981+
def test_should_get_correct_list_of_documents(fixtures):
982+
class Query(graphene.ObjectType):
983+
players = MongoengineConnectionField(nodes.PlayerNode)
984+
985+
query = """
986+
query players {
987+
players(firstName: "Michael") {
988+
edges {
989+
node {
990+
firstName,
991+
articles(first: 3) {
992+
edges {
993+
node {
994+
headline
995+
}
996+
}
997+
}
998+
}
999+
}
1000+
}
1001+
}
1002+
"""
1003+
expected = {
1004+
"players": {
1005+
"edges": [{
1006+
"node": {
1007+
"firstName": "Michael",
1008+
"articles": {
1009+
"edges": [{
1010+
"node": {
1011+
"headline": "Hello"
1012+
}
1013+
}, {
1014+
"node": {
1015+
"headline": "World"
1016+
}
1017+
}]
1018+
}
1019+
}
1020+
}]
1021+
}
1022+
}
1023+
schema = graphene.Schema(query=Query)
1024+
result = schema.execute(query)
1025+
1026+
assert not result.errors
1027+
assert result.data == expected

graphene_mongo/types.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,6 @@ def rescan_fields(cls):
194194
cls._meta.fields.update({field: mongoengine_fields[field]})
195195
# Self-referenced fields can't change between scans!
196196

197-
# noqa
198197
@classmethod
199198
def is_type_of(cls, root, info):
200199
if isinstance(root, cls):
@@ -212,7 +211,3 @@ def get_node(cls, info, id):
212211

213212
def resolve_id(self, info):
214213
return str(self.id)
215-
216-
# @classmethod
217-
# def get_connection(cls):
218-
# return connection_for_type(cls)

0 commit comments

Comments
 (0)