|
22 | 22 |
|
23 | 23 | from rest_framework import serializers
|
24 | 24 | from rest_framework.compat import DurationField as ModelDurationField
|
25 |
| -from rest_framework.compat import unicode_repr |
| 25 | +from rest_framework.compat import DecimalValidator, unicode_repr |
26 | 26 |
|
27 | 27 |
|
28 | 28 | def dedent(blocktext):
|
@@ -861,3 +861,41 @@ class Meta:
|
861 | 861 | }]
|
862 | 862 |
|
863 | 863 | assert serializer.data == expected
|
| 864 | + |
| 865 | + |
| 866 | +class DecimalFieldModel(models.Model): |
| 867 | + decimal_field = models.DecimalField( |
| 868 | + max_digits=3, |
| 869 | + decimal_places=1, |
| 870 | + validators=[MinValueValidator(1), MaxValueValidator(3)] |
| 871 | + ) |
| 872 | + |
| 873 | + |
| 874 | +class TestDecimalFieldMappings(TestCase): |
| 875 | + @pytest.mark.skipif(DecimalValidator is not None, |
| 876 | + reason='DecimalValidator is available in Django 1.9+') |
| 877 | + def test_decimal_field_has_no_decimal_validator(self): |
| 878 | + """ |
| 879 | + Test that a DecimalField has no validators before Django 1.9. |
| 880 | + """ |
| 881 | + class TestSerializer(serializers.ModelSerializer): |
| 882 | + class Meta: |
| 883 | + model = DecimalFieldModel |
| 884 | + |
| 885 | + serializer = TestSerializer() |
| 886 | + |
| 887 | + assert len(serializer.fields['decimal_field'].validators) == 0 |
| 888 | + |
| 889 | + @pytest.mark.skipif(DecimalValidator is None, |
| 890 | + reason='DecimalValidator is available in Django 1.9+') |
| 891 | + def test_decimal_field_has_decimal_validator(self): |
| 892 | + """ |
| 893 | + Test that a DecimalField has DecimalValidator in Django 1.9+. |
| 894 | + """ |
| 895 | + class TestSerializer(serializers.ModelSerializer): |
| 896 | + class Meta: |
| 897 | + model = DecimalFieldModel |
| 898 | + |
| 899 | + serializer = TestSerializer() |
| 900 | + |
| 901 | + assert len(serializer.fields['decimal_field'].validators) == 2 |
0 commit comments