2013-01-04 17:05:31 +04:00
|
|
|
"""
|
|
|
|
General tests for relational fields.
|
|
|
|
"""
|
2013-02-05 00:55:35 +04:00
|
|
|
from __future__ import unicode_literals
|
2013-01-04 03:17:31 +04:00
|
|
|
from django.db import models
|
|
|
|
from django.test import TestCase
|
|
|
|
from rest_framework import serializers
|
|
|
|
|
|
|
|
|
|
|
|
class NullModel(models.Model):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
class FieldTests(TestCase):
|
|
|
|
def test_pk_related_field_with_empty_string(self):
|
|
|
|
"""
|
|
|
|
Regression test for #446
|
|
|
|
|
|
|
|
https://github.com/tomchristie/django-rest-framework/issues/446
|
|
|
|
"""
|
|
|
|
field = serializers.PrimaryKeyRelatedField(queryset=NullModel.objects.all())
|
2013-01-04 17:50:40 +04:00
|
|
|
self.assertRaises(serializers.ValidationError, field.from_native, '')
|
|
|
|
self.assertRaises(serializers.ValidationError, field.from_native, [])
|
|
|
|
|
|
|
|
def test_hyperlinked_related_field_with_empty_string(self):
|
|
|
|
field = serializers.HyperlinkedRelatedField(queryset=NullModel.objects.all(), view_name='')
|
|
|
|
self.assertRaises(serializers.ValidationError, field.from_native, '')
|
|
|
|
self.assertRaises(serializers.ValidationError, field.from_native, [])
|
|
|
|
|
|
|
|
def test_slug_related_field_with_empty_string(self):
|
|
|
|
field = serializers.SlugRelatedField(queryset=NullModel.objects.all(), slug_field='pk')
|
|
|
|
self.assertRaises(serializers.ValidationError, field.from_native, '')
|
|
|
|
self.assertRaises(serializers.ValidationError, field.from_native, [])
|
2013-01-30 16:09:17 +04:00
|
|
|
|
|
|
|
|
|
|
|
class TestManyRelateMixin(TestCase):
|
|
|
|
def test_missing_many_to_many_related_field(self):
|
|
|
|
'''
|
|
|
|
Regression test for #632
|
|
|
|
|
|
|
|
https://github.com/tomchristie/django-rest-framework/pull/632
|
|
|
|
'''
|
2013-02-07 13:14:58 +04:00
|
|
|
field = serializers.RelatedField(many=True, read_only=False)
|
2013-01-30 16:09:17 +04:00
|
|
|
|
|
|
|
into = {}
|
|
|
|
field.field_from_native({}, None, 'field_name', into)
|
|
|
|
self.assertEqual(into['field_name'], [])
|