Skip to content

Commit 0043d00

Browse files
committed
wip: Can support contains query at this moment
1 parent cb055a7 commit 0043d00

File tree

4 files changed

+59
-8
lines changed

4 files changed

+59
-8
lines changed

graphene_mongo/fields.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ def args(self, args):
6565

6666
def _field_args(self, items):
6767
def is_filterable(k):
68+
print(k)
6869
if not hasattr(self.model, k):
6970
return False
7071
if isinstance(getattr(self.model, k), property):
@@ -73,14 +74,15 @@ def is_filterable(k):
7374
converted = convert_mongoengine_field(getattr(self.model, k), self.registry)
7475
except MongoEngineConversionError:
7576
return False
76-
if isinstance(converted, (ConnectionField, Dynamic, List)):
77+
if isinstance(converted, (ConnectionField, Dynamic)):
7778
return False
7879
if callable(getattr(converted, 'type', None)) and isinstance(converted.type(),
7980
(PointFieldType, MultiPolygonFieldType)):
8081
return False
8182
return True
8283

8384
def get_type(v):
85+
print(v)
8486
if isinstance(v.type, Structure):
8587
return v.type.of_type()
8688
return v.type()
@@ -128,6 +130,7 @@ def get_queryset(self, model, info, **args):
128130
return queryset_or_filters
129131
else:
130132
args.update(queryset_or_filters)
133+
print(args)
131134
return model.objects(**args)
132135

133136
def default_resolver(self, _root, info, **args):

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: 10 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,14 @@ 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+
print(field.field_args['awards'])
25+
assert set(field.field_args.keys()) == set(field_args)
26+
27+
2028
def test_field_args_with_property():
2129
field = MongoengineConnectionField(PublisherNode)
2230

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_of_string(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") {
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)

0 commit comments

Comments
 (0)