diff options
| author | José Padilla | 2014-11-28 12:14:40 -0400 |
|---|---|---|
| committer | José Padilla | 2014-11-28 12:14:40 -0400 |
| commit | 0cc990792c63caa8fa8fea62cea53b0d28157b55 (patch) | |
| tree | 7ea80a203cc8718150cd55e4403f3f4771160281 /tests/test_relations.py | |
| parent | 1aa77830955dcdf829f65a9001b6b8900dfc8755 (diff) | |
| parent | 3a5b3772fefc3c2f2c0899947cbc07bfe6e6b5d2 (diff) | |
| download | django-rest-framework-0cc990792c63caa8fa8fea62cea53b0d28157b55.tar.bz2 | |
Merge branch 'version-3.1' into oauth_as_package
Conflicts:
requirements-test.txt
rest_framework/compat.py
tests/settings.py
tox.ini
Diffstat (limited to 'tests/test_relations.py')
| -rw-r--r-- | tests/test_relations.py | 178 |
1 files changed, 13 insertions, 165 deletions
diff --git a/tests/test_relations.py b/tests/test_relations.py index c29618ce..62353dc2 100644 --- a/tests/test_relations.py +++ b/tests/test_relations.py @@ -1,5 +1,5 @@ from .utils import mock_reverse, fail_reverse, BadType, MockObject, MockQueryset -from django.core.exceptions import ImproperlyConfigured, ValidationError +from django.core.exceptions import ImproperlyConfigured from rest_framework import serializers from rest_framework.test import APISimpleTestCase import pytest @@ -30,15 +30,15 @@ class TestPrimaryKeyRelatedField(APISimpleTestCase): assert instance is self.instance def test_pk_related_lookup_does_not_exist(self): - with pytest.raises(ValidationError) as excinfo: + with pytest.raises(serializers.ValidationError) as excinfo: self.field.to_internal_value(4) - msg = excinfo.value.messages[0] + msg = excinfo.value.detail[0] assert msg == "Invalid pk '4' - object does not exist." def test_pk_related_lookup_invalid_type(self): - with pytest.raises(ValidationError) as excinfo: + with pytest.raises(serializers.ValidationError) as excinfo: self.field.to_internal_value(BadType()) - msg = excinfo.value.messages[0] + msg = excinfo.value.detail[0] assert msg == 'Incorrect type. Expected pk value, received BadType.' def test_pk_representation(self): @@ -51,7 +51,7 @@ class TestHyperlinkedIdentityField(APISimpleTestCase): self.instance = MockObject(pk=1, name='foo') self.field = serializers.HyperlinkedIdentityField(view_name='example') self.field.reverse = mock_reverse - self.field.context = {'request': True} + self.field._context = {'request': True} def test_representation(self): representation = self.field.to_representation(self.instance) @@ -62,7 +62,7 @@ class TestHyperlinkedIdentityField(APISimpleTestCase): assert representation is None def test_representation_with_format(self): - self.field.context['format'] = 'xml' + self.field._context['format'] = 'xml' representation = self.field.to_representation(self.instance) assert representation == 'http://example.org/example/1.xml/' @@ -91,14 +91,14 @@ class TestHyperlinkedIdentityFieldWithFormat(APISimpleTestCase): self.instance = MockObject(pk=1, name='foo') self.field = serializers.HyperlinkedIdentityField(view_name='example', format='json') self.field.reverse = mock_reverse - self.field.context = {'request': True} + self.field._context = {'request': True} def test_representation(self): representation = self.field.to_representation(self.instance) assert representation == 'http://example.org/example/1/' def test_representation_with_format(self): - self.field.context['format'] = 'xml' + self.field._context['format'] = 'xml' representation = self.field.to_representation(self.instance) assert representation == 'http://example.org/example/1.json/' @@ -120,169 +120,17 @@ class TestSlugRelatedField(APISimpleTestCase): assert instance is self.instance def test_slug_related_lookup_does_not_exist(self): - with pytest.raises(ValidationError) as excinfo: + with pytest.raises(serializers.ValidationError) as excinfo: self.field.to_internal_value('doesnotexist') - msg = excinfo.value.messages[0] + msg = excinfo.value.detail[0] assert msg == 'Object with name=doesnotexist does not exist.' def test_slug_related_lookup_invalid_type(self): - with pytest.raises(ValidationError) as excinfo: + with pytest.raises(serializers.ValidationError) as excinfo: self.field.to_internal_value(BadType()) - msg = excinfo.value.messages[0] + msg = excinfo.value.detail[0] assert msg == 'Invalid value.' def test_representation(self): representation = self.field.to_representation(self.instance) assert representation == self.instance.name - -# Older tests, for review... - -# """ -# General tests for relational fields. -# """ -# from __future__ import unicode_literals -# from django import get_version -# from django.db import models -# from django.test import TestCase -# from django.utils import unittest -# from rest_framework import serializers -# from tests.models import BlogPost - - -# 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()) -# self.assertRaises(serializers.ValidationError, field.to_primative, '') -# self.assertRaises(serializers.ValidationError, field.to_primative, []) - -# def test_hyperlinked_related_field_with_empty_string(self): -# field = serializers.HyperlinkedRelatedField(queryset=NullModel.objects.all(), view_name='') -# self.assertRaises(serializers.ValidationError, field.to_primative, '') -# self.assertRaises(serializers.ValidationError, field.to_primative, []) - -# def test_slug_related_field_with_empty_string(self): -# field = serializers.SlugRelatedField(queryset=NullModel.objects.all(), slug_field='pk') -# self.assertRaises(serializers.ValidationError, field.to_primative, '') -# self.assertRaises(serializers.ValidationError, field.to_primative, []) - - -# class TestManyRelatedMixin(TestCase): -# def test_missing_many_to_many_related_field(self): -# ''' -# Regression test for #632 - -# https://github.com/tomchristie/django-rest-framework/pull/632 -# ''' -# field = serializers.RelatedField(many=True, read_only=False) - -# into = {} -# field.field_from_native({}, None, 'field_name', into) -# self.assertEqual(into['field_name'], []) - - -# # Regression tests for #694 (`source` attribute on related fields) - -# class RelatedFieldSourceTests(TestCase): -# def test_related_manager_source(self): -# """ -# Relational fields should be able to use manager-returning methods as their source. -# """ -# BlogPost.objects.create(title='blah') -# field = serializers.RelatedField(many=True, source='get_blogposts_manager') - -# class ClassWithManagerMethod(object): -# def get_blogposts_manager(self): -# return BlogPost.objects - -# obj = ClassWithManagerMethod() -# value = field.field_to_native(obj, 'field_name') -# self.assertEqual(value, ['BlogPost object']) - -# def test_related_queryset_source(self): -# """ -# Relational fields should be able to use queryset-returning methods as their source. -# """ -# BlogPost.objects.create(title='blah') -# field = serializers.RelatedField(many=True, source='get_blogposts_queryset') - -# class ClassWithQuerysetMethod(object): -# def get_blogposts_queryset(self): -# return BlogPost.objects.all() - -# obj = ClassWithQuerysetMethod() -# value = field.field_to_native(obj, 'field_name') -# self.assertEqual(value, ['BlogPost object']) - -# def test_dotted_source(self): -# """ -# Source argument should support dotted.source notation. -# """ -# BlogPost.objects.create(title='blah') -# field = serializers.RelatedField(many=True, source='a.b.c') - -# class ClassWithQuerysetMethod(object): -# a = { -# 'b': { -# 'c': BlogPost.objects.all() -# } -# } - -# obj = ClassWithQuerysetMethod() -# value = field.field_to_native(obj, 'field_name') -# self.assertEqual(value, ['BlogPost object']) - -# # Regression for #1129 -# def test_exception_for_incorect_fk(self): -# """ -# Check that the exception message are correct if the source field -# doesn't exist. -# """ -# from tests.models import ManyToManySource - -# class Meta: -# model = ManyToManySource - -# attrs = { -# 'name': serializers.SlugRelatedField( -# slug_field='name', source='banzai'), -# 'Meta': Meta, -# } - -# TestSerializer = type( -# str('TestSerializer'), -# (serializers.ModelSerializer,), -# attrs -# ) -# with self.assertRaises(AttributeError): -# TestSerializer(data={'name': 'foo'}) - - -# @unittest.skipIf(get_version() < '1.6.0', 'Upstream behaviour changed in v1.6') -# class RelatedFieldChoicesTests(TestCase): -# """ -# Tests for #1408 "Web browseable API doesn't have blank option on drop down list box" -# https://github.com/tomchristie/django-rest-framework/issues/1408 -# """ -# def test_blank_option_is_added_to_choice_if_required_equals_false(self): -# """ - -# """ -# post = BlogPost(title="Checking blank option is added") -# post.save() - -# queryset = BlogPost.objects.all() -# field = serializers.RelatedField(required=False, queryset=queryset) - -# choice_count = BlogPost.objects.count() -# widget_count = len(field.widget.choices) - -# self.assertEqual(widget_count, choice_count + 1, 'BLANK_CHOICE_DASH option should have been added') |
