Skip to content

Commit 1301b0e

Browse files
committed
test: Add EmbeddedDocument as document field
1 parent ae8702b commit 1301b0e

File tree

3 files changed

+54
-5
lines changed

3 files changed

+54
-5
lines changed

graphene_mongo/tests/fixtures.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from .models import (
22
Article, Editor, EmbeddedArticle, Player,
3-
Reporter, Child
3+
Reporter, Child, ProfessorMetadata, ProfessorVector,
44
)
55

66

@@ -84,3 +84,15 @@ def setup_fixtures():
8484

8585
child2 = Child(bar='bar', baz='baz')
8686
child2.save()
87+
88+
ProfessorVector.drop_collection()
89+
professor_metadata = ProfessorMetadata(
90+
first_name='Steven',
91+
last_name='Curry',
92+
departments=['NBA', 'MLB']
93+
)
94+
professor_vector = ProfessorVector(
95+
vec=[1.0, 2.3],
96+
metadata=professor_metadata
97+
)
98+
professor_vector.save()

graphene_mongo/tests/models.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
)
55
from mongoengine.fields import (
66
DateTimeField, EmailField, EmbeddedDocumentField,
7-
EmbeddedDocumentListField, ListField,
7+
FloatField, EmbeddedDocumentListField, ListField,
88
MapField, ReferenceField, StringField
99
)
1010

@@ -59,6 +59,8 @@ class Reporter(Document):
5959

6060

6161
class Player(Document):
62+
63+
meta = {'collection': 'test_player'}
6264
first_name = StringField(required=True)
6365
last_name = StringField(required=True)
6466
opponent = ReferenceField('Player')
@@ -78,5 +80,22 @@ class Parent(Document):
7880

7981
class Child(Parent):
8082

81-
meta = {'collection': 'Child'}
83+
meta = {'collection': 'test_child'}
8284
baz = StringField()
85+
86+
87+
class ProfessorMetadata(EmbeddedDocument):
88+
89+
meta = {'collection': 'test_professor_metadata'}
90+
# id = StringField()
91+
first_name = StringField()
92+
last_name = StringField()
93+
departments = ListField(StringField())
94+
95+
96+
class ProfessorVector(Document):
97+
98+
meta = {'collection': 'test_professor_vector'}
99+
# id = StringField()
100+
vec = ListField(FloatField())
101+
metadata = EmbeddedDocumentField(ProfessorMetadata)

graphene_mongo/tests/test_converter.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66

77
from py.test import raises
88

9-
from .models import Article, Editor, EmbeddedArticle, Player, Reporter
10-
9+
from .models import (
10+
Article, Editor, EmbeddedArticle, Player, Reporter,
11+
ProfessorMetadata, ProfessorVector,
12+
)
1113
from .. import registry
1214
from ..converter import convert_mongoengine_field
1315
from ..fields import MongoengineConnectionField
@@ -96,6 +98,22 @@ class Meta:
9698
assert graphene_type.type == E
9799

98100

101+
def test_should_embedded_convert_dynamic():
102+
103+
class PM(MongoengineObjectType):
104+
105+
class Meta:
106+
model = ProfessorMetadata
107+
interfaces = (Node,)
108+
109+
dynamic_field = convert_mongoengine_field(
110+
ProfessorVector._fields['metadata'], PM._meta.registry)
111+
assert isinstance(dynamic_field, Dynamic)
112+
graphene_type = dynamic_field.get_type()
113+
assert isinstance(graphene_type, graphene.Field)
114+
assert graphene_type.type == PM
115+
116+
99117
def test_should_convert_none():
100118
registry.reset_global_registry()
101119
dynamic_field = convert_mongoengine_field(

0 commit comments

Comments
 (0)