|
17 | 17 | from rest_framework.fields import (
|
18 | 18 | BuiltinSignatureError, DjangoImageField, is_simple_callable
|
19 | 19 | )
|
| 20 | +from tests.models import UUIDForeignKeyTarget |
20 | 21 |
|
21 | 22 | utc = datetime.timezone.utc
|
22 | 23 |
|
@@ -2074,6 +2075,35 @@ class TestNestedListField(FieldValues):
|
2074 | 2075 | field = serializers.ListField(child=serializers.ListField(child=serializers.IntegerField()))
|
2075 | 2076 |
|
2076 | 2077 |
|
| 2078 | +class TestListFieldWithDjangoValidationErrors(FieldValues, TestCase): |
| 2079 | + """ |
| 2080 | + Values for `ListField` with UUIDField as child |
| 2081 | + (since UUIDField can throw ValidationErrors from Django). |
| 2082 | + The idea is to test that Django's ValidationErrors raised |
| 2083 | + from Django internals are caught and serializers in a way |
| 2084 | + that is structurally consistent with DRF's ValidationErrors. |
| 2085 | + """ |
| 2086 | + |
| 2087 | + valid_inputs = [] |
| 2088 | + invalid_inputs = [ |
| 2089 | + ( |
| 2090 | + ['not-a-valid-uuid', 'd7364368-d1b3-4455-aaa3-56439b460ca2', 'some-other-invalid-uuid'], |
| 2091 | + { |
| 2092 | + 0: [exceptions.ErrorDetail(string='“not-a-valid-uuid” is not a valid UUID.', code='invalid')], |
| 2093 | + 1: [ |
| 2094 | + exceptions.ErrorDetail( |
| 2095 | + string='Invalid pk "d7364368-d1b3-4455-aaa3-56439b460ca2" - object does not exist.', |
| 2096 | + code='does_not_exist', |
| 2097 | + ) |
| 2098 | + ], |
| 2099 | + 2: [exceptions.ErrorDetail(string='“some-other-invalid-uuid” is not a valid UUID.', code='invalid')], |
| 2100 | + }, |
| 2101 | + ), |
| 2102 | + ] |
| 2103 | + outputs = {} |
| 2104 | + field = serializers.ListField(child=serializers.PrimaryKeyRelatedField(queryset=UUIDForeignKeyTarget.objects.all())) |
| 2105 | + |
| 2106 | + |
2077 | 2107 | class TestEmptyListField(FieldValues):
|
2078 | 2108 | """
|
2079 | 2109 | Values for `ListField` with allow_empty=False flag.
|
|
0 commit comments