|
16 | 16 | from rest_framework.fields import (
|
17 | 17 | BuiltinSignatureError, DjangoImageField, is_simple_callable
|
18 | 18 | )
|
| 19 | +from tests.models import UUIDForeignKeyTarget |
19 | 20 |
|
20 | 21 | utc = datetime.timezone.utc
|
21 | 22 |
|
@@ -2040,6 +2041,35 @@ class TestNestedListField(FieldValues):
|
2040 | 2041 | field = serializers.ListField(child=serializers.ListField(child=serializers.IntegerField()))
|
2041 | 2042 |
|
2042 | 2043 |
|
| 2044 | +class TestListFieldWithDjangoValidationErrors(FieldValues, TestCase): |
| 2045 | + """ |
| 2046 | + Values for `ListField` with UUIDField as child |
| 2047 | + (since UUIDField can throw ValidationErrors from Django). |
| 2048 | + The idea is to test that Django's ValidationErrors raised |
| 2049 | + from Django internals are caught and serializers in a way |
| 2050 | + that is structurally consistent with DRF's ValidationErrors. |
| 2051 | + """ |
| 2052 | + |
| 2053 | + valid_inputs = [] |
| 2054 | + invalid_inputs = [ |
| 2055 | + ( |
| 2056 | + ['not-a-valid-uuid', 'd7364368-d1b3-4455-aaa3-56439b460ca2', 'some-other-invalid-uuid'], |
| 2057 | + { |
| 2058 | + 0: [exceptions.ErrorDetail(string='“not-a-valid-uuid” is not a valid UUID.', code='invalid')], |
| 2059 | + 1: [ |
| 2060 | + exceptions.ErrorDetail( |
| 2061 | + string='Invalid pk "d7364368-d1b3-4455-aaa3-56439b460ca2" - object does not exist.', |
| 2062 | + code='does_not_exist', |
| 2063 | + ) |
| 2064 | + ], |
| 2065 | + 2: [exceptions.ErrorDetail(string='“some-other-invalid-uuid” is not a valid UUID.', code='invalid')], |
| 2066 | + }, |
| 2067 | + ), |
| 2068 | + ] |
| 2069 | + outputs = {} |
| 2070 | + field = serializers.ListField(child=serializers.PrimaryKeyRelatedField(queryset=UUIDForeignKeyTarget.objects.all())) |
| 2071 | + |
| 2072 | + |
2043 | 2073 | class TestEmptyListField(FieldValues):
|
2044 | 2074 | """
|
2045 | 2075 | Values for `ListField` with allow_empty=False flag.
|
|
0 commit comments