Skip to content

Commit f6a60e2

Browse files
authored
Merge pull request #79 from graphql-python/fix-list-of-string
Support contains query of list at this moment
2 parents cb055a7 + 2e00773 commit f6a60e2

File tree

5 files changed

+57
-10
lines changed

5 files changed

+57
-10
lines changed

graphene_mongo/fields.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from graphene.relay import ConnectionField
99
from graphene.types.argument import to_arguments
1010
from graphene.types.dynamic import Dynamic
11-
from graphene.types.structures import Structure, List
11+
from graphene.types.structures import Structure
1212
from graphql_relay.connection.arrayconnection import connection_from_list_slice
1313

1414
from .advanced_types import PointFieldType, MultiPolygonFieldType
@@ -73,7 +73,7 @@ def is_filterable(k):
7373
converted = convert_mongoengine_field(getattr(self.model, k), self.registry)
7474
except MongoEngineConversionError:
7575
return False
76-
if isinstance(converted, (ConnectionField, Dynamic, List)):
76+
if isinstance(converted, (ConnectionField, Dynamic)):
7777
return False
7878
if callable(getattr(converted, 'type', None)) and isinstance(converted.type(),
7979
(PointFieldType, MultiPolygonFieldType)):

graphene_mongo/tests/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@ class Reporter(Document):
6565
first_name = StringField(required=True)
6666
last_name = StringField(required=True)
6767
email = EmailField()
68+
awards = ListField(StringField())
6869
articles = ListField(ReferenceField(Article))
6970
embedded_articles = ListField(EmbeddedDocumentField(EmbeddedArticle))
7071
embedded_list_articles = EmbeddedDocumentListField(EmbeddedArticle)
71-
awards = ListField(StringField())
7272

7373

7474
class Player(Document):

graphene_mongo/tests/test_fields.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from ..fields import MongoengineConnectionField
2-
from .types import ArticleNode, PublisherNode, ErroneousModelNode
2+
from .types import ArticleNode, PublisherNode, ReporterNode, ErroneousModelNode
33
from .setup import fixtures
44

55

6-
def test_field_args():
6+
def test_article_field_args():
77
field = MongoengineConnectionField(ArticleNode)
88

99
field_args = ['id', 'headline', 'pub_date']
@@ -17,6 +17,13 @@ def test_field_args():
1717
assert set(field.args) == set(args)
1818

1919

20+
def test_reporter_field_args():
21+
field = MongoengineConnectionField(ReporterNode)
22+
23+
field_args = ['id', 'first_name', 'last_name', 'email', 'awards']
24+
assert set(field.field_args.keys()) == set(field_args)
25+
26+
2027
def test_field_args_with_property():
2128
field = MongoengineConnectionField(PublisherNode)
2229

graphene_mongo/tests/test_relay_query.py

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def resolve_reporter(self, *args, **kwargs):
3636
firstName,
3737
lastName,
3838
email,
39+
awards,
3940
articles {
4041
edges {
4142
node {
@@ -65,6 +66,7 @@ def resolve_reporter(self, *args, **kwargs):
6566
'firstName': 'Allen',
6667
'lastName': 'Iverson',
6768
'email': '[email protected]',
69+
'awards': ['2010-mvp'],
6870
'articles': {
6971
'edges': [
7072
{
@@ -337,24 +339,62 @@ class Query(graphene.ObjectType):
337339
expected, sort_keys=True)
338340

339341

340-
def test_should_get_node_by_id(fixtures):
342+
def test_should_filter_by_list_contains(fixtures):
341343
# Notes: https://goo.gl/hMNRgs
342344
class Query(graphene.ObjectType):
343-
reporter = Node.Field(ReporterNode)
344345
reporters = MongoengineConnectionField(ReporterNode)
345346

346347
query = '''
347348
query ReportersQuery {
349+
reporters (awards: "2010-mvp") {
350+
edges {
351+
node {
352+
id,
353+
firstName,
354+
awards
355+
}
356+
}
357+
}
358+
}
359+
'''
360+
expected = {
361+
'reporters': {
362+
'edges': [
363+
{
364+
'node': {
365+
'id': 'UmVwb3J0ZXJOb2RlOjE=',
366+
'firstName': 'Allen',
367+
'awards': ['2010-mvp']
368+
}
369+
}
370+
]
371+
}
372+
}
373+
schema = graphene.Schema(query=Query)
374+
result = schema.execute(query)
375+
assert not result.errors
376+
assert result.data == expected
377+
378+
379+
def test_should_filter_by_id(fixtures):
380+
# Notes: https://goo.gl/hMNRgs
381+
class Query(graphene.ObjectType):
382+
reporter = Node.Field(ReporterNode)
383+
384+
query = '''
385+
query ReporterQuery {
348386
reporter (id: "UmVwb3J0ZXJOb2RlOjE=") {
349387
id,
350-
firstName
388+
firstName,
389+
awards
351390
}
352391
}
353392
'''
354393
expected = {
355394
'reporter': {
356395
'id': 'UmVwb3J0ZXJOb2RlOjE=',
357-
'firstName': 'Allen'
396+
'firstName': 'Allen',
397+
'awards': ['2010-mvp']
358398
}
359399
}
360400
schema = graphene.Schema(query=Query)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
setup(
44
name='graphene-mongo',
5-
version='0.2.1',
5+
version='0.2.2',
66

77
description='Graphene Mongoengine integration',
88
long_description=open('README.rst').read(),

0 commit comments

Comments
 (0)