Skip to content

Commit 442bce7

Browse files
committed
feat: Make relay query work with nested args
1 parent 9c20e69 commit 442bce7

File tree

3 files changed

+35
-28
lines changed

3 files changed

+35
-28
lines changed

graphene_mongo/fields.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,12 +179,15 @@ def default_resolver(self, _root, info, **args):
179179
return connection
180180

181181
def chained_resolver(self, resolver, root, info, **args):
182-
resolved = resolver(root, info, **args)
183-
if resolved is not None:
184-
return resolved
182+
if not bool(args):
183+
# XXX: Filter nested args
184+
resolved = resolver(root, info, **args)
185+
if resolved is not None:
186+
return resolved
185187
return self.default_resolver(root, info, **args)
186188

187189
def get_resolver(self, parent_resolver):
188190
super_resolver = self.resolver or parent_resolver
191+
# print('super_resolver', super_resolver)
189192
resolver = partial(self.chained_resolver, super_resolver)
190193
return partial(self.connection_resolver, resolver, self.type)

graphene_mongo/tests/test_relay_query.py

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ def get_nodes(data, key):
2525
def test_should_query_reporter(fixtures):
2626

2727
class Query(graphene.ObjectType):
28-
node = Node.Field()
2928
reporter = graphene.Field(ReporterNode)
3029

3130
def resolve_reporter(self, *args, **kwargs):
@@ -132,7 +131,6 @@ def resolve_reporter(self, *args, **kwargs):
132131
def test_should_query_reporters_with_nested_document(fixtures):
133132

134133
class Query(graphene.ObjectType):
135-
node = Node.Field()
136134
reporters = MongoengineConnectionField(ReporterNode)
137135

138136
query = '''
@@ -156,40 +154,45 @@ class Query(graphene.ObjectType):
156154
}
157155
'''
158156
expected = {
159-
'reporter': {
160-
'firstName': 'Allen',
161-
'lastName': 'Iverson',
162-
'email': '[email protected]',
163-
'articles': {
164-
'edges': [
165-
{
166-
'node': {
167-
'headline': 'Hello'
157+
'reporters': {
158+
'edges': [
159+
{
160+
'node': {
161+
'firstName': 'Allen',
162+
'lastName': 'Iverson',
163+
'email': '[email protected]',
164+
'articles': {
165+
'edges': [
166+
{
167+
'node': {
168+
'headline': 'Hello'
169+
}
170+
}
171+
]
168172
}
169173
}
170-
]
171-
}
174+
}
175+
]
172176
}
173177
}
174178

175-
print(query, expected)
176-
# schema = graphene.Schema(query=Query)
177-
# result = schema.execute(query)
178-
# assert not result.errors
179-
# print(dict(result.data['reporters']))
180-
# assert json.dumps(result.data['reporter'], sort_keys=True) \
181-
# == json.dumps(expected['reporter'], sort_keys=True)
179+
# print(query, expected)
180+
schema = graphene.Schema(query=Query)
181+
result = schema.execute(query)
182+
assert not result.errors
183+
# import json
184+
# print(json.dumps(result.data['reporters']))
185+
assert result.data['reporters'] == expected['reporters']
182186

183187

184188
def test_should_query_all_editors(fixtures, fixtures_dirname):
185189

186190
class Query(graphene.ObjectType):
187-
node = Node.Field()
188-
all_editors = MongoengineConnectionField(EditorNode)
191+
editors = MongoengineConnectionField(EditorNode)
189192

190193
query = '''
191194
query EditorQuery {
192-
allEditors {
195+
editors {
193196
edges {
194197
node {
195198
id,
@@ -211,7 +214,7 @@ class Query(graphene.ObjectType):
211214
data = base64.b64encode(f.read())
212215

213216
expected = {
214-
'allEditors': {
217+
'editors': {
215218
'edges': [
216219
{
217220
'node': {
@@ -256,7 +259,7 @@ class Query(graphene.ObjectType):
256259
schema = graphene.Schema(query=Query)
257260
result = schema.execute(query)
258261
assert not result.errors
259-
assert result.data['allEditors'] == expected['allEditors']
262+
assert result.data['editors'] == expected['editors']
260263

261264

262265
def test_should_filter_editors_by_id(fixtures):

graphene_mongo/tests/types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class Meta:
5757

5858

5959
class ProfessorMetadataType(MongoengineObjectType):
60+
6061
class Meta:
6162
model = models.ProfessorMetadata
6263

0 commit comments

Comments
 (0)