Skip to content

Commit 47d76f9

Browse files
committed
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)