TestUniqueConstraintValidation failing on foreign key field.

This commit is contained in:
Andrea Zanotto 2025-04-02 10:49:27 +02:00
parent ffadde930e
commit 78f2cf8659

View File

@ -517,11 +517,15 @@ class TestUniquenessTogetherValidation(TestCase):
assert queryset.called_with == {'race_name': 'bar', 'position': 1} assert queryset.called_with == {'race_name': 'bar', 'position': 1}
class FancyConditionModel(models.Model):
id = models.IntegerField(primary_key=True)
class UniqueConstraintModel(models.Model): class UniqueConstraintModel(models.Model):
race_name = models.CharField(max_length=100) race_name = models.CharField(max_length=100)
position = models.IntegerField() position = models.IntegerField()
global_id = models.IntegerField() global_id = models.IntegerField()
fancy_conditions = models.IntegerField() fancy_conditions = models.ForeignKey(FancyConditionModel, on_delete=models.CASCADE)
class Meta: class Meta:
constraints = [ constraints = [
@ -578,23 +582,24 @@ class UniqueConstraintNullableSerializer(serializers.ModelSerializer):
class TestUniqueConstraintValidation(TestCase): class TestUniqueConstraintValidation(TestCase):
def setUp(self): def setUp(self):
fancy_model_condition = FancyConditionModel.objects.create(id=1)
self.instance = UniqueConstraintModel.objects.create( self.instance = UniqueConstraintModel.objects.create(
race_name='example', race_name='example',
position=1, position=1,
global_id=1, global_id=1,
fancy_conditions=1 fancy_conditions=fancy_model_condition
) )
UniqueConstraintModel.objects.create( UniqueConstraintModel.objects.create(
race_name='example', race_name='example',
position=2, position=2,
global_id=2, global_id=2,
fancy_conditions=1 fancy_conditions=fancy_model_condition
) )
UniqueConstraintModel.objects.create( UniqueConstraintModel.objects.create(
race_name='other', race_name='other',
position=1, position=1,
global_id=3, global_id=3,
fancy_conditions=1 fancy_conditions=fancy_model_condition
) )
def test_repr(self): def test_repr(self):
@ -618,24 +623,27 @@ class TestUniqueConstraintValidation(TestCase):
Fields used in UniqueConstraint's condition must be included Fields used in UniqueConstraint's condition must be included
into queryset existence check into queryset existence check
""" """
fancy_model_condition_9 = FancyConditionModel.objects.create(id=9)
fancy_model_condition_10 = FancyConditionModel.objects.create(id=10)
fancy_model_condition_11 = FancyConditionModel.objects.create(id=11)
UniqueConstraintModel.objects.create( UniqueConstraintModel.objects.create(
race_name='condition', race_name='condition',
position=1, position=1,
global_id=10, global_id=10,
fancy_conditions=10, fancy_conditions=fancy_model_condition_10,
) )
serializer = UniqueConstraintSerializer(data={ serializer = UniqueConstraintSerializer(data={
'race_name': 'condition', 'race_name': 'condition',
'position': 1, 'position': 1,
'global_id': 11, 'global_id': 11,
'fancy_conditions': 9, 'fancy_conditions': fancy_model_condition_9,
}) })
assert serializer.is_valid() assert serializer.is_valid()
serializer = UniqueConstraintSerializer(data={ serializer = UniqueConstraintSerializer(data={
'race_name': 'condition', 'race_name': 'condition',
'position': 1, 'position': 1,
'global_id': 11, 'global_id': 11,
'fancy_conditions': 11, 'fancy_conditions': fancy_model_condition_11,
}) })
assert not serializer.is_valid() assert not serializer.is_valid()