Skip to content

Commit 7d79cf3

Browse files
committed
Add regression test for DecimalField mapping
1 parent 41d1e42 commit 7d79cf3

File tree

1 file changed

+39
-1
lines changed

1 file changed

+39
-1
lines changed

tests/test_model_serializer.py

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
from rest_framework import serializers
2424
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
2626

2727

2828
def dedent(blocktext):
@@ -861,3 +861,41 @@ class Meta:
861861
}]
862862

863863
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

Comments
 (0)