mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-02 11:30:12 +03:00
minor error message typos. ConfigurationError caught and raised as ValidationError. Tests
This commit is contained in:
parent
1adbd96ba5
commit
0705671731
|
@ -51,7 +51,10 @@ class GenericRelatedField(serializers.WritableField):
|
||||||
|
|
||||||
def from_native(self, value):
|
def from_native(self, value):
|
||||||
# Get the serializer responsible for input resolving
|
# Get the serializer responsible for input resolving
|
||||||
serializer = self.determine_serializer_for_data(value)
|
try:
|
||||||
|
serializer = self.determine_serializer_for_data(value)
|
||||||
|
except ConfigurationError as e:
|
||||||
|
raise ValidationError(e)
|
||||||
serializer.initialize(self.parent, self.source)
|
serializer.initialize(self.parent, self.source)
|
||||||
return serializer.from_native(value)
|
return serializer.from_native(value)
|
||||||
|
|
||||||
|
@ -73,12 +76,12 @@ class GenericRelatedField(serializers.WritableField):
|
||||||
serializer.from_native(value)
|
serializer.from_native(value)
|
||||||
# Collects all serializers that can handle the input data.
|
# Collects all serializers that can handle the input data.
|
||||||
serializers.append(serializer)
|
serializers.append(serializer)
|
||||||
except Exception:
|
except:
|
||||||
pass
|
pass
|
||||||
# If no serializer found, raise error.
|
# If no serializer found, raise error.
|
||||||
l = len(serializers)
|
l = len(serializers)
|
||||||
if l < 1:
|
if l < 1:
|
||||||
raise ConfigurationError('Could not determine a valid serializer for value "%r"' % value)
|
raise ConfigurationError('Could not determine a valid serializer for value %r.' % value)
|
||||||
elif l > 1:
|
elif l > 1:
|
||||||
raise ConfigurationError('There were multiple serializers found for value "%r"' % value)
|
raise ConfigurationError('There were multiple serializers found for value %r.' % value)
|
||||||
return serializers[0]
|
return serializers[0]
|
||||||
|
|
|
@ -243,7 +243,9 @@ class TestGenericRelatedFieldSerialization(TestCase):
|
||||||
'tag': 'reminder',
|
'tag': 'reminder',
|
||||||
'tagged_item': 'just a string'
|
'tagged_item': 'just a string'
|
||||||
})
|
})
|
||||||
self.assertRaises(ConfigurationError, serializer.is_valid)
|
|
||||||
|
with self.assertRaises(ConfigurationError):
|
||||||
|
serializer.fields['tagged_item'].determine_serializer_for_data('just a string')
|
||||||
|
|
||||||
def test_not_registered_view_name(self):
|
def test_not_registered_view_name(self):
|
||||||
class TagSerializer(serializers.ModelSerializer):
|
class TagSerializer(serializers.ModelSerializer):
|
||||||
|
@ -262,7 +264,7 @@ class TestGenericRelatedFieldSerialization(TestCase):
|
||||||
self.assertFalse(serializer.is_valid())
|
self.assertFalse(serializer.is_valid())
|
||||||
|
|
||||||
def test_invalid_url(self):
|
def test_invalid_url(self):
|
||||||
# Should fail ATM
|
|
||||||
class TagSerializer(serializers.ModelSerializer):
|
class TagSerializer(serializers.ModelSerializer):
|
||||||
tagged_item = GenericRelatedField({
|
tagged_item = GenericRelatedField({
|
||||||
Bookmark: serializers.HyperlinkedRelatedField(view_name='bookmark-detail'),
|
Bookmark: serializers.HyperlinkedRelatedField(view_name='bookmark-detail'),
|
||||||
|
@ -276,7 +278,13 @@ class TestGenericRelatedFieldSerialization(TestCase):
|
||||||
'tag': 'reminder',
|
'tag': 'reminder',
|
||||||
'tagged_item': 'foo-bar'
|
'tagged_item': 'foo-bar'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
expected = {
|
||||||
|
'tagged_item': ['Could not determine a valid serializer for value %r.' % 'foo-bar']
|
||||||
|
}
|
||||||
|
|
||||||
self.assertFalse(serializer.is_valid())
|
self.assertFalse(serializer.is_valid())
|
||||||
|
self.assertEqual(expected, serializer.errors)
|
||||||
|
|
||||||
def test_serializer_save(self):
|
def test_serializer_save(self):
|
||||||
class TagSerializer(serializers.ModelSerializer):
|
class TagSerializer(serializers.ModelSerializer):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user