Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 47d76f9

Browse files
test(ModelSerializer): add test_get_field_names
1 parent 6ce6574 commit 47d76f9

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

‎tests/test_serializers.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22
from django.db import models
3+
from rest_framework.utils import model_meta
34

45
from rest_framework_json_api import serializers
56
from tests.models import DJAModel, ManyToManyTarget
@@ -50,3 +51,37 @@ class ReservedFieldNamesSerializer(serializers.Serializer):
5051
"ReservedFieldNamesSerializer uses following reserved field name(s) which is "
5152
"not allowed: meta, results"
5253
)
54+
55+
56+
def test_get_field_names():
57+
class MyTestModel(DJAModel):
58+
verified = models.BooleanField(default=False)
59+
uuid = models.UUIDField()
60+
61+
class AnotherSerializer(serializers.Serializer):
62+
ref_id = serializers.CharField()
63+
reference_string = serializers.CharField()
64+
65+
class MyTestModelSerializer(AnotherSerializer, serializers.ModelSerializer):
66+
an_extra_field = serializers.CharField()
67+
68+
class Meta:
69+
model = MyTestModel
70+
resource_name = "myTestModel"
71+
fields = "__all__"
72+
extra_kwargs = {
73+
"verified": {"read_only": True},
74+
}
75+
76+
# Same logic than in DRF get_fields() method
77+
declared_fields = MyTestModelSerializer._declared_fields
78+
info = model_meta.get_field_info(MyTestModel)
79+
80+
assert MyTestModelSerializer().get_field_names(declared_fields, info) == [
81+
"id",
82+
"ref_id",
83+
"reference_string",
84+
"an_extra_field",
85+
"verified",
86+
"uuid",
87+
]

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /