From 33b49779a14384fc971a3ad3ab20502f8fe3b1c0 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Tue, 2 Sep 2025 19:50:39 +0100 Subject: [PATCH] Add another failing test --- tests/models.py | 9 +++++++++ tests/test_serializer_lists.py | 28 +++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/tests/models.py b/tests/models.py index a3ee73456..79a5308bc 100644 --- a/tests/models.py +++ b/tests/models.py @@ -168,3 +168,12 @@ class EmailPKModel(RESTFrameworkModel): @property def is_valid(self): return self.name == 'valid' + + +class PersonUUID(RESTFrameworkModel): + id = models.UUIDField(primary_key=True) + name = models.CharField(max_length=100) + + @property + def is_valid(self): + return self.name == 'valid' diff --git a/tests/test_serializer_lists.py b/tests/test_serializer_lists.py index c86c1bd15..aa806c1d1 100644 --- a/tests/test_serializer_lists.py +++ b/tests/test_serializer_lists.py @@ -6,7 +6,7 @@ from rest_framework import serializers from rest_framework.exceptions import ErrorDetail from tests.models import ( CustomManagerModel, EmailPKModel, ListModelForTest, NullableOneToOneSource, - OneToOneTarget + OneToOneTarget, PersonUUID ) @@ -840,3 +840,29 @@ class TestManyTrueValidationCheck: input_data = [{"email": "test@test.com", "name": "bar"}] serializer = self.email_serializer(instance=EmailPKModel.objects.all(), data=input_data, many=True) assert serializer.is_valid(), serializer.errors + + def test_uuid_validate_many(self): + PersonUUID.objects.create(id="c20f2f31-65a3-451f-ae7d-e939b7d9f84b", name="valid") + PersonUUID.objects.create(id="3308237e-18d8-4074-9d05-79cc0fdb5bb3", name="other") + + class PersonUUIDSerializer(serializers.ModelSerializer): + uuid = serializers.UUIDField(source="id") + + class Meta: + model = PersonUUID + fields = ("uuid", "name") + read_only_fields = ('uuid',) + + def validate_name(self, value): + if value and not self.instance.is_valid: + return False + return value + + input_data = [ + { + "uuid": "t3308237e-18d8-4074-9d05-79cc0fdb5bb3", + "name": "bar", + }, + ] + serializer = PersonUUIDSerializer(instance=list(PersonUUID.objects.all()), data=input_data, many=True) + assert serializer.is_valid(), serializer.errors