Skip to content

Commit

Permalink
Merge pull request #79 from graphql-python/fix-list-of-string
Browse files Browse the repository at this point in the history
Support contains query of list at this moment
  • Loading branch information
abawchen committed Apr 15, 2019
2 parents cb055a7 + 2e00773 commit f6a60e2
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 10 deletions.
4 changes: 2 additions & 2 deletions graphene_mongo/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from graphene.relay import ConnectionField
from graphene.types.argument import to_arguments
from graphene.types.dynamic import Dynamic
from graphene.types.structures import Structure, List
from graphene.types.structures import Structure
from graphql_relay.connection.arrayconnection import connection_from_list_slice

from .advanced_types import PointFieldType, MultiPolygonFieldType
Expand Down Expand Up @@ -73,7 +73,7 @@ def is_filterable(k):
converted = convert_mongoengine_field(getattr(self.model, k), self.registry)
except MongoEngineConversionError:
return False
if isinstance(converted, (ConnectionField, Dynamic, List)):
if isinstance(converted, (ConnectionField, Dynamic)):
return False
if callable(getattr(converted, 'type', None)) and isinstance(converted.type(),
(PointFieldType, MultiPolygonFieldType)):
Expand Down
2 changes: 1 addition & 1 deletion graphene_mongo/tests/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,10 @@ class Reporter(Document):
first_name = StringField(required=True)
last_name = StringField(required=True)
email = EmailField()
awards = ListField(StringField())
articles = ListField(ReferenceField(Article))
embedded_articles = ListField(EmbeddedDocumentField(EmbeddedArticle))
embedded_list_articles = EmbeddedDocumentListField(EmbeddedArticle)
awards = ListField(StringField())


class Player(Document):
Expand Down
11 changes: 9 additions & 2 deletions graphene_mongo/tests/test_fields.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from ..fields import MongoengineConnectionField
from .types import ArticleNode, PublisherNode, ErroneousModelNode
from .types import ArticleNode, PublisherNode, ReporterNode, ErroneousModelNode
from .setup import fixtures


def test_field_args():
def test_article_field_args():
field = MongoengineConnectionField(ArticleNode)

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


def test_reporter_field_args():
field = MongoengineConnectionField(ReporterNode)

field_args = ['id', 'first_name', 'last_name', 'email', 'awards']
assert set(field.field_args.keys()) == set(field_args)


def test_field_args_with_property():
field = MongoengineConnectionField(PublisherNode)

Expand Down
48 changes: 44 additions & 4 deletions graphene_mongo/tests/test_relay_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ def resolve_reporter(self, *args, **kwargs):
firstName,
lastName,
email,
awards,
articles {
edges {
node {
Expand Down Expand Up @@ -65,6 +66,7 @@ def resolve_reporter(self, *args, **kwargs):
'firstName': 'Allen',
'lastName': 'Iverson',
'email': 'ai@gmail.com',
'awards': ['2010-mvp'],
'articles': {
'edges': [
{
Expand Down Expand Up @@ -337,24 +339,62 @@ class Query(graphene.ObjectType):
expected, sort_keys=True)


def test_should_get_node_by_id(fixtures):
def test_should_filter_by_list_contains(fixtures):
# Notes: https://goo.gl/hMNRgs
class Query(graphene.ObjectType):
reporter = Node.Field(ReporterNode)
reporters = MongoengineConnectionField(ReporterNode)

query = '''
query ReportersQuery {
reporters (awards: "2010-mvp") {
edges {
node {
id,
firstName,
awards
}
}
}
}
'''
expected = {
'reporters': {
'edges': [
{
'node': {
'id': 'UmVwb3J0ZXJOb2RlOjE=',
'firstName': 'Allen',
'awards': ['2010-mvp']
}
}
]
}
}
schema = graphene.Schema(query=Query)
result = schema.execute(query)
assert not result.errors
assert result.data == expected


def test_should_filter_by_id(fixtures):
# Notes: https://goo.gl/hMNRgs
class Query(graphene.ObjectType):
reporter = Node.Field(ReporterNode)

query = '''
query ReporterQuery {
reporter (id: "UmVwb3J0ZXJOb2RlOjE=") {
id,
firstName
firstName,
awards
}
}
'''
expected = {
'reporter': {
'id': 'UmVwb3J0ZXJOb2RlOjE=',
'firstName': 'Allen'
'firstName': 'Allen',
'awards': ['2010-mvp']
}
}
schema = graphene.Schema(query=Query)
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

setup(
name='graphene-mongo',
version='0.2.1',
version='0.2.2',

description='Graphene Mongoengine integration',
long_description=open('README.rst').read(),
Expand Down

0 comments on commit f6a60e2

Please sign in to comment.