mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-23 01:57:00 +03:00
Merge pull request #861 from minddust/fix_missing_field_values
Remove default values - django sets them for us - cause of #710
This commit is contained in:
commit
3f47eb7a77
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue
Block a user