Skip to content

Commit 940a1f8

Browse files
committed
test: Add related test case of EmbeddedDocument field
1 parent 1301b0e commit 940a1f8

File tree

4 files changed

+52
-10
lines changed

4 files changed

+52
-10
lines changed

graphene_mongo/tests/fixtures.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ def setup_fixtures():
8787

8888
ProfessorVector.drop_collection()
8989
professor_metadata = ProfessorMetadata(
90+
id='5e06aa20-6805-4eef-a144-5615dedbe32b',
9091
first_name='Steven',
9192
last_name='Curry',
9293
departments=['NBA', 'MLB']

graphene_mongo/tests/models.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class Child(Parent):
8787
class ProfessorMetadata(EmbeddedDocument):
8888

8989
meta = {'collection': 'test_professor_metadata'}
90-
# id = StringField()
90+
id = StringField(primary_key=False)
9191
first_name = StringField()
9292
last_name = StringField()
9393
departments = ListField(StringField())
@@ -96,6 +96,5 @@ class ProfessorMetadata(EmbeddedDocument):
9696
class ProfessorVector(Document):
9797

9898
meta = {'collection': 'test_professor_vector'}
99-
# id = StringField()
10099
vec = ListField(FloatField())
101100
metadata = EmbeddedDocumentField(ProfessorMetadata)

graphene_mongo/tests/test_query.py

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
import graphene
44

55
from .fixtures import setup_fixtures
6-
from .models import Editor, Player, Reporter
7-
from .types import (EditorType,
8-
PlayerType,
9-
ReporterType)
6+
from .models import (
7+
Editor, Player, Reporter, ProfessorVector
8+
)
9+
from .types import (
10+
EditorType, PlayerType, ReporterType, ProfessorVectorType
11+
)
1012

1113
setup_fixtures()
1214

@@ -227,6 +229,34 @@ def resolve_all_players(self, *args, **kwargs):
227229
assert json.dumps(result.data, sort_keys=True) == json.dumps(expected, sort_keys=True)
228230

229231

230-
# TODO:
231-
def test_should_paging():
232-
pass
232+
def test_should_query_with_embedded_document():
233+
234+
class Query(graphene.ObjectType):
235+
professor_vector = graphene.Field(ProfessorVectorType, id=graphene.String())
236+
237+
def resolve_professor_vector(self, info, id):
238+
return ProfessorVector.objects(metadata__id=id).first()
239+
240+
query = """
241+
query {
242+
professorVector(id: "5e06aa20-6805-4eef-a144-5615dedbe32b") {
243+
vec
244+
metadata {
245+
firstName
246+
}
247+
}
248+
}
249+
"""
250+
251+
expected = {
252+
'professorVector': {
253+
'vec': [1.0, 2.3],
254+
'metadata': {
255+
'firstName': 'Steven'
256+
}
257+
}
258+
}
259+
schema = graphene.Schema(query=Query, types=[ProfessorVectorType])
260+
result = schema.execute(query)
261+
assert not result.errors
262+
assert json.dumps(result.data, sort_keys=True) == json.dumps(expected, sort_keys=True)

graphene_mongo/tests/types.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from ..types import MongoengineObjectType
44
from .models import (
55
Article, Editor, EmbeddedArticle, Player, Reporter,
6-
Parent, Child
6+
Parent, Child, ProfessorMetadata, ProfessorVector,
77
)
88

99

@@ -49,6 +49,18 @@ class Meta:
4949
model = Child
5050

5151

52+
class ProfessorMetadataType(MongoengineObjectType):
53+
54+
class Meta:
55+
model = ProfessorMetadata
56+
57+
58+
class ProfessorVectorType(MongoengineObjectType):
59+
60+
class Meta:
61+
model = ProfessorVector
62+
63+
5264
class ArticleNode(MongoengineObjectType):
5365

5466
class Meta:

0 commit comments

Comments
 (0)