Skip to content

Commit 6bc60fd

Browse files
committed
wip: test_converter and test_query pass
1 parent 2e77898 commit 6bc60fd

File tree

6 files changed

+67
-18
lines changed

6 files changed

+67
-18
lines changed

graphene_mongo/converter.py

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,20 +65,25 @@ def convert_field_to_float(field, registry=None):
6565
return Float(description=get_field_description(field, registry), required=field.required)
6666

6767

68+
@convert_mongoengine_field.register(mongoengine.DateTimeField)
69+
def convert_field_to_datetime(field, registry=None):
70+
return DateTime(description=get_field_description(field, registry), required=field.required)
71+
72+
6873
@convert_mongoengine_field.register(mongoengine.DictField)
6974
@convert_mongoengine_field.register(mongoengine.MapField)
7075
def convert_field_to_jsonstring(field, registry=None):
7176
return JSONString(description=get_field_description(field, registry), required=field.required)
7277

7378

7479
@convert_mongoengine_field.register(mongoengine.PointField)
75-
def convert_point_to_field(field, register=None):
80+
def convert_point_to_field(field, registry=None):
7681
from . import advanced_types
7782
return Field(advanced_types.PointFieldType)
7883

7984

8085
@convert_mongoengine_field.register(mongoengine.PolygonField)
81-
def convert_polygon_to_field(field, register=None):
86+
def convert_polygon_to_field(field, registry=None):
8287
from . import advanced_types
8388
return Field(advanced_types.PolygonFieldType)
8489

@@ -89,17 +94,26 @@ def convert_multipolygon_to_field(field, register=None):
8994
return Field(advanced_types.MultiPolygonFieldType)
9095

9196

92-
@convert_mongoengine_field.register(mongoengine.DateTimeField)
93-
def convert_field_to_datetime(field, registry=None):
94-
return DateTime(description=get_field_description(field, registry), required=field.required)
95-
96-
9797
@convert_mongoengine_field.register(mongoengine.FileField)
98-
def convert_field_to_none(field, register=None):
99-
from .advanced_types import FsFileType
100-
print(FsFileType)
101-
# FIXME
102-
return None
98+
def convert_file_to_field(field, registry=None):
99+
from . import advanced_types
100+
"""
101+
from .advanced_models import FsFile
102+
103+
Meta = type(
104+
'Meta',
105+
(object,),
106+
{'model': FsFile, 'interfaces': (Node,)}
107+
)
108+
_ = type(
109+
'_FsFileType',
110+
(MongoengineObjectType,),
111+
{'Meta': Meta}
112+
)
113+
field = mongoengine.ReferenceField(FsFile)
114+
"""
115+
field = mongoengine.ReferenceField(advanced_types.FsFile)
116+
return convert_mongoengine_field(field, registry)
103117

104118

105119
@convert_mongoengine_field.register(mongoengine.ListField)

graphene_mongo/tests/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
from mongomock import gridfs
44

55
gridfs.enable_gridfs_integration()
6-
mongoengine.connect('graphene-mongo-test', host='mongomock://localhost', alias='default')
6+
# mongoengine.connect('graphene-mongo-test', host='mongomock://localhost', alias='default')
7+
mongoengine.connect('graphene-mongo-test', host='mongodb://192.168.15.91/graphene-mongo-dev')
78

89

910
class Publisher(mongoengine.Document):

graphene_mongo/tests/setup.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,16 @@ def fixtures():
2727
)
2828
image_filename = os.path.join(
2929
current_dirname, 'fixtures', 'image.jpg')
30-
with open(image_filename, 'r') as f:
30+
with open(image_filename, 'rb') as f:
3131
editor1.avatar.put(f, content_type='image/jpeg')
3232
editor1.save()
3333

34+
"""
35+
e = Editor.objects(first_name='Penny').first()
36+
avatar = e.avatar.read()
37+
print(e.avatar.content_type)
38+
"""
39+
3440
editor2 = Editor(
3541
id='2',
3642
first_name='Grant',

graphene_mongo/tests/test_converter.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,16 @@ def test_should_multipolygon_convert_field():
9898
assert isinstance(graphene_type.type.coordinates, graphene.List)
9999

100100

101+
def test_should_file_convert_field():
102+
from ..advanced_types import FsFileType
103+
dynamic_field = convert_mongoengine_field(
104+
mongoengine.FileField(), registry.get_global_registry())
105+
assert isinstance(dynamic_field, graphene.Dynamic)
106+
graphene_type = dynamic_field.get_type()
107+
assert isinstance(graphene_type, graphene.Field)
108+
assert graphene_type.type == FsFileType
109+
110+
101111
def test_should_field_convert_list():
102112
assert_conversion(mongoengine.ListField, graphene.List, field=mongoengine.StringField())
103113

@@ -297,8 +307,6 @@ class Meta:
297307

298308

299309
def test_should_generic_reference_convert_union():
300-
pass
301-
"""
302310
class A(MongoengineObjectType):
303311

304312
class Meta:
@@ -318,4 +326,3 @@ class Meta:
318326
Reporter._fields['generic_reference'], registry.get_global_registry())
319327
assert isinstance(generic_reference_field, graphene.Field)
320328
assert isinstance(generic_reference_field.type(), graphene.Union)
321-
"""

graphene_mongo/tests/test_query.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ def resolve_editors(self, *args, **kwargs):
3131
metadata,
3232
company {
3333
name
34+
},
35+
avatar {
36+
contentType,
37+
chunkSize,
38+
length,
39+
md5
3440
}
3541
}
3642
editors {
@@ -42,7 +48,13 @@ def resolve_editors(self, *args, **kwargs):
4248
expected = {
4349
'editor': {
4450
'firstName': 'Penny',
45-
'company': {'name': 'Newsco'}
51+
'company': {'name': 'Newsco'},
52+
'avatar': {
53+
'contentType': 'image/jpeg',
54+
'chunkSize': 261120,
55+
'length': 46928,
56+
'md5': 'f3c657fd472fdc4bc2ca9056a1ae6106'
57+
}
4658
},
4759
'editors': [{
4860
'firstName': 'Penny',

graphene_mongo/types.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,17 @@ def rescan_fields(cls):
163163
# noqa
164164
@classmethod
165165
def is_type_of(cls, root, info):
166+
print('cls')
167+
print(cls)
168+
print('root')
169+
print(root.__dict__)
170+
print(root)
171+
print(type(root))
172+
print('*' * 20)
166173
if isinstance(root, cls):
167174
return True
175+
if isinstance(root, mongoengine.GridFSProxy):
176+
return True
168177
if not is_valid_mongoengine_model(type(root)):
169178
raise Exception((
170179
'Received incompatible instance "{}".'

0 commit comments

Comments
 (0)