Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions rest_framework_mongoengine/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
is_abstract_model
)


# This object is used for customization of nested field attributes in DocumentSerializer
Customization = namedtuple("Customization", [
'fields',
Expand Down Expand Up @@ -656,12 +655,12 @@ def build_compound_field(self, field_name, model_field, child_field):
field_kwargs['child'] = child_field

return field_class, field_kwargs

def serializer_reference_field_factory(self, field_class):
return type(
self.serializer_reference_base_field.__name__,
(self.serializer_reference_base_field,),
{'pk_field_class': field_class,}
{'pk_field_class': field_class}
)

def build_reference_field(self, field_name, relation_info, nested_depth):
Expand Down
5 changes: 4 additions & 1 deletion tests/models.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
""" all models shared in tests
class names should be unique across whole project
"""
from mongoengine import Document, DynamicDocument, EmbeddedDocument, fields, DynamicEmbeddedDocument
from mongoengine import (
Document, DynamicDocument, DynamicEmbeddedDocument, EmbeddedDocument,
fields
)


class DumbDocument(Document):
Expand Down
8 changes: 5 additions & 3 deletions tests/test_dynamic.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@
DocumentSerializer, DynamicDocumentSerializer, EmbeddedDocumentSerializer
)

from .models import DumbDocument, DumbDynamic, DumbEmbedded, EmbeddingDynamic, DumbDynamicEmbedded, \
DocumentEmbeddingDynamic
from .models import (
DocumentEmbeddingDynamic, DumbDocument, DumbDynamic, DumbDynamicEmbedded,
DumbEmbedded, EmbeddingDynamic
)
from .utils import dedent


Expand Down Expand Up @@ -400,4 +402,4 @@ def test_update(self):
assert serializer_data_json == new_data_json

def doCleanups(self):
DocumentEmbeddingDynamic.drop_collection()
DocumentEmbeddingDynamic.drop_collection()
36 changes: 18 additions & 18 deletions tests/test_reference.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from collections import OrderedDict

from django.test import TestCase
from bson import DBRef
from django.test import TestCase
from mongoengine import Document, fields
from rest_framework.compat import unicode_repr
from rest_framework.fields import IntegerField
Expand Down Expand Up @@ -325,7 +325,7 @@ class Meta:
expected = dedent("""
TestSerializer():
id = ObjectIdField(read_only=True)
ref = CustomReferencing(queryset=ReferencedDoc.objects, required=False)
ref = ReferenceField(queryset=ReferencedDoc.objects, required=False)
""")
assert unicode_repr(TestSerializer()) == expected

Expand Down Expand Up @@ -834,17 +834,17 @@ def test_update_data(self):

class TestReferenceCustomPk(TestCase):
"""Operational test

Test if all operations performed correctly
"""

def doCleanups(self):
CustomPkModel.drop_collection()
ReferencingWithCustomPk.drop_collection()

def test_parsing(self):
input_data = {'ref': 'foo'}

serializer = ReferencingWithCustomPkSerializer(data=input_data)
# No CustomPkModel object with name 'foo'
assert not serializer.is_valid(), not serializer.errors
Expand All @@ -859,7 +859,7 @@ def test_parsing(self):
assert serializer.validated_data == expected

def test_retrieve(self):
referenced = CustomPkModel.objects.create(name='foo')
referenced = CustomPkModel.objects.create(name='foo')
referencing = ReferencingWithCustomPk.objects.create(ref=referenced)
serializer = ReferencingWithCustomPkSerializer(referencing)

Expand All @@ -871,7 +871,7 @@ def test_retrieve(self):
assert serializer.data == expected

def test_create(self):
referenced = CustomPkModel.objects.create(name='foo')
CustomPkModel.objects.create(name='foo')

input_data = {'ref': 'unexisting'}
serializer = ReferencingWithCustomPkSerializer(data=input_data)
Expand All @@ -892,8 +892,8 @@ def test_create(self):
assert serializer.data == expected

def test_update(self):
referenced = CustomPkModel.objects.create(name='foo')
referenced2 = CustomPkModel.objects.create(name='bar')
referenced = CustomPkModel.objects.create(name='foo')
CustomPkModel.objects.create(name='bar')
instance = ReferencingWithCustomPk.objects.create(ref=referenced)

data = {'ref': 'unexisting'}
Expand All @@ -917,17 +917,17 @@ def test_update(self):

class TestListReferenceCustomPk(TestCase):
"""Operational test

Test if all operations performed correctly
"""

def doCleanups(self):
CustomPkModel.drop_collection()
ListReferencingWithCustomPk.drop_collection()

def test_parsing(self):
input_data = {'refs': ['foo', 'bar']}

serializer = ListReferencingWithCustomPkSerializer(data=input_data)
# No CustomPkModel object with name 'foo'
assert not serializer.is_valid(), not serializer.errors
Expand All @@ -951,8 +951,8 @@ def test_parsing(self):
assert serializer.validated_data == expected

def test_retrieve(self):
referenced = CustomPkModel.objects.create(name='foo')
referenced2 = CustomPkModel.objects.create(name='bar')
referenced = CustomPkModel.objects.create(name='foo')
referenced2 = CustomPkModel.objects.create(name='bar')
referencing = ListReferencingWithCustomPk.objects.create(refs=[referenced, referenced2])
serializer = ListReferencingWithCustomPkSerializer(referencing)

Expand All @@ -968,13 +968,13 @@ def test_create(self):
serializer = ListReferencingWithCustomPkSerializer(data=input_data)
assert not serializer.is_valid(), not serializer.errors

referenced = CustomPkModel.objects.create(name='foo')
CustomPkModel.objects.create(name='foo')

input_data = {'refs': ['foo', 'bar']}
serializer = ListReferencingWithCustomPkSerializer(data=input_data)
assert not serializer.is_valid(), not serializer.errors

referenced2 = CustomPkModel.objects.create(name='bar')
CustomPkModel.objects.create(name='bar')

input_data = {'refs': ['foo', 'bar']}
serializer = ListReferencingWithCustomPkSerializer(data=input_data)
Expand All @@ -991,8 +991,8 @@ def test_create(self):
assert serializer.data == expected

def test_update(self):
referenced = CustomPkModel.objects.create(name='foo')
CustomPkModel.objects.create(name='bar')
referenced = CustomPkModel.objects.create(name='foo')
CustomPkModel.objects.create(name='bar')
instance = ListReferencingWithCustomPk.objects.create(refs=[referenced])

data = {'refs': ['unexisting']}
Expand Down