Skip to content

Commit fad9c64

Browse files
committed
test(ModelSerializer): add test_get_field_names
1 parent 6ce6574 commit fad9c64

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

tests/test_serializers.py

+34
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,36 @@ 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+
fields = "__all__"
71+
extra_kwargs = {
72+
"verified": {"read_only": True},
73+
}
74+
75+
# Same logic than in DRF get_fields() method
76+
declared_fields = MyTestModelSerializer._declared_fields
77+
info = model_meta.get_field_info(MyTestModel)
78+
79+
assert MyTestModelSerializer().get_field_names(declared_fields, info) == [
80+
"id",
81+
"ref_id",
82+
"reference_string",
83+
"an_extra_field",
84+
"verified",
85+
"uuid",
86+
]

0 commit comments

Comments
 (0)