diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index 93a69fe4b..57e540e7a 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -22,7 +22,7 @@ from django.utils import six from rest_framework import serializers from rest_framework.compat import DurationField as ModelDurationField -from rest_framework.compat import unicode_repr +from rest_framework.compat import DecimalValidator, unicode_repr def dedent(blocktext): @@ -861,3 +861,41 @@ class Issue2704TestCase(TestCase): }] assert serializer.data == expected + + +class DecimalFieldModel(models.Model): + decimal_field = models.DecimalField( + max_digits=3, + decimal_places=1, + validators=[MinValueValidator(1), MaxValueValidator(3)] + ) + + +class TestDecimalFieldMappings(TestCase): + @pytest.mark.skipif(DecimalValidator is not None, + reason='DecimalValidator is available in Django 1.9+') + def test_decimal_field_has_no_decimal_validator(self): + """ + Test that a DecimalField has no validators before Django 1.9. + """ + class TestSerializer(serializers.ModelSerializer): + class Meta: + model = DecimalFieldModel + + serializer = TestSerializer() + + assert len(serializer.fields['decimal_field'].validators) == 0 + + @pytest.mark.skipif(DecimalValidator is None, + reason='DecimalValidator is available in Django 1.9+') + def test_decimal_field_has_decimal_validator(self): + """ + Test that a DecimalField has DecimalValidator in Django 1.9+. + """ + class TestSerializer(serializers.ModelSerializer): + class Meta: + model = DecimalFieldModel + + serializer = TestSerializer() + + assert len(serializer.fields['decimal_field'].validators) == 2