diff options
| author | Tom Christie | 2013-05-18 07:32:50 -0700 | 
|---|---|---|
| committer | Tom Christie | 2013-05-18 07:32:50 -0700 | 
| commit | 3f47eb7a77fcc735782dd1bf8e8e053e26417ea1 (patch) | |
| tree | 321311b77cf14ad51881f7f052387a8f30cb8b8b | |
| parent | 5f8d353f0b4e0938866a1e954bbd762f383d893b (diff) | |
| parent | 6714b755f4938e998907e3d949c832f77a76fadc (diff) | |
| download | django-rest-framework-3f47eb7a77fcc735782dd1bf8e8e053e26417ea1.tar.bz2 | |
Merge pull request #861 from minddust/fix_missing_field_values
Remove default values - django sets them for us - cause of #710
| -rw-r--r-- | rest_framework/fields.py | 2 | ||||
| -rw-r--r-- | rest_framework/tests/fields.py | 124 | 
2 files changed, 124 insertions, 2 deletions
| diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 491aa7ed..fc14184c 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -383,7 +383,6 @@ class URLField(CharField):      type_name = 'URLField'      def __init__(self, **kwargs): -        kwargs['max_length'] = kwargs.get('max_length', 200)          kwargs['validators'] = [validators.URLValidator()]          super(URLField, self).__init__(**kwargs) @@ -392,7 +391,6 @@ class SlugField(CharField):      type_name = 'SlugField'      def __init__(self, *args, **kwargs): -        kwargs['max_length'] = kwargs.get('max_length', 50)          super(SlugField, self).__init__(*args, **kwargs) diff --git a/rest_framework/tests/fields.py b/rest_framework/tests/fields.py index 6b1cdfc7..dad69975 100644 --- a/rest_framework/tests/fields.py +++ b/rest_framework/tests/fields.py @@ -10,6 +10,7 @@ from django.test import TestCase  from django.core import validators  from rest_framework import serializers  from rest_framework.serializers import Serializer +from rest_framework.tests.models import RESTFrameworkModel  class TimestampedModel(models.Model): @@ -685,3 +686,126 @@ class ChoiceFieldTests(TestCase):          """          f = serializers.ChoiceField(required=False, choices=self.SAMPLE_CHOICES)          self.assertEqual(f.choices, models.fields.BLANK_CHOICE_DASH + self.SAMPLE_CHOICES) + + +class EmailFieldTests(TestCase): +    """ +    Tests for EmailField attribute values +    """ + +    class EmailFieldModel(RESTFrameworkModel): +        email_field = models.EmailField(blank=True) + +    class EmailFieldWithGivenMaxLengthModel(RESTFrameworkModel): +        email_field = models.EmailField(max_length=150, blank=True) + +    def test_default_model_value(self): +        class EmailFieldSerializer(serializers.ModelSerializer): +            class Meta: +                model = self.EmailFieldModel + +        serializer = EmailFieldSerializer(data={}) +        self.assertEqual(serializer.is_valid(), True) +        self.assertEqual(getattr(serializer.fields['email_field'], 'max_length'), 75) + +    def test_given_model_value(self): +        class EmailFieldSerializer(serializers.ModelSerializer): +            class Meta: +                model = self.EmailFieldWithGivenMaxLengthModel + +        serializer = EmailFieldSerializer(data={}) +        self.assertEqual(serializer.is_valid(), True) +        self.assertEqual(getattr(serializer.fields['email_field'], 'max_length'), 150) + +    def test_given_serializer_value(self): +        class EmailFieldSerializer(serializers.ModelSerializer): +            email_field = serializers.EmailField(source='email_field', max_length=20, required=False) + +            class Meta: +                model = self.EmailFieldModel + +        serializer = EmailFieldSerializer(data={}) +        self.assertEqual(serializer.is_valid(), True) +        self.assertEqual(getattr(serializer.fields['email_field'], 'max_length'), 20) + + +class SlugFieldTests(TestCase): +    """ +    Tests for SlugField attribute values +    """ + +    class SlugFieldModel(RESTFrameworkModel): +        slug_field = models.SlugField(blank=True) + +    class SlugFieldWithGivenMaxLengthModel(RESTFrameworkModel): +        slug_field = models.SlugField(max_length=84, blank=True) + +    def test_default_model_value(self): +        class SlugFieldSerializer(serializers.ModelSerializer): +            class Meta: +                model = self.SlugFieldModel + +        serializer = SlugFieldSerializer(data={}) +        self.assertEqual(serializer.is_valid(), True) +        self.assertEqual(getattr(serializer.fields['slug_field'], 'max_length'), 50) + +    def test_given_model_value(self): +        class SlugFieldSerializer(serializers.ModelSerializer): +            class Meta: +                model = self.SlugFieldWithGivenMaxLengthModel + +        serializer = SlugFieldSerializer(data={}) +        self.assertEqual(serializer.is_valid(), True) +        self.assertEqual(getattr(serializer.fields['slug_field'], 'max_length'), 84) + +    def test_given_serializer_value(self): +        class SlugFieldSerializer(serializers.ModelSerializer): +            slug_field = serializers.SlugField(source='slug_field', max_length=20, required=False) + +            class Meta: +                model = self.SlugFieldModel + +        serializer = SlugFieldSerializer(data={}) +        self.assertEqual(serializer.is_valid(), True) +        self.assertEqual(getattr(serializer.fields['slug_field'], 'max_length'), 20) + + +class URLFieldTests(TestCase): +    """ +    Tests for URLField attribute values +    """ + +    class URLFieldModel(RESTFrameworkModel): +        url_field = models.URLField(blank=True) + +    class URLFieldWithGivenMaxLengthModel(RESTFrameworkModel): +        url_field = models.URLField(max_length=128, blank=True) + +    def test_default_model_value(self): +        class URLFieldSerializer(serializers.ModelSerializer): +            class Meta: +                model = self.URLFieldModel + +        serializer = URLFieldSerializer(data={}) +        self.assertEqual(serializer.is_valid(), True) +        self.assertEqual(getattr(serializer.fields['url_field'], 'max_length'), 200) + +    def test_given_model_value(self): +        class URLFieldSerializer(serializers.ModelSerializer): +            class Meta: +                model = self.URLFieldWithGivenMaxLengthModel + +        serializer = URLFieldSerializer(data={}) +        self.assertEqual(serializer.is_valid(), True) +        self.assertEqual(getattr(serializer.fields['url_field'], 'max_length'), 128) + +    def test_given_serializer_value(self): +        class URLFieldSerializer(serializers.ModelSerializer): +            url_field = serializers.URLField(source='url_field', max_length=20, required=False) + +            class Meta: +                model = self.URLFieldWithGivenMaxLengthModel + +        serializer = URLFieldSerializer(data={}) +        self.assertEqual(serializer.is_valid(), True) +        self.assertEqual(getattr(serializer.fields['url_field'], 'max_length'), 20) | 
