diff options
Diffstat (limited to 'rest_framework/tests')
| -rw-r--r-- | rest_framework/tests/fields.py | 54 | ||||
| -rw-r--r-- | rest_framework/tests/generics.py | 74 | ||||
| -rw-r--r-- | rest_framework/tests/permissions.py | 15 | ||||
| -rw-r--r-- | rest_framework/tests/renderers.py | 8 |
4 files changed, 75 insertions, 76 deletions
diff --git a/rest_framework/tests/fields.py b/rest_framework/tests/fields.py index 22c515a9..bff4400b 100644 --- a/rest_framework/tests/fields.py +++ b/rest_framework/tests/fields.py @@ -3,17 +3,13 @@ General serializer field tests. """ from __future__ import unicode_literals -from collections import namedtuple +import datetime from decimal import Decimal from uuid import uuid4 - -import datetime -from django import forms from django.core import validators from django.db import models from django.test import TestCase from django.utils.datastructures import SortedDict - from rest_framework import serializers from rest_framework.fields import Field, CharField from rest_framework.serializers import Serializer @@ -784,12 +780,12 @@ class SlugFieldTests(TestCase): """ class SlugFieldSerializer(serializers.ModelSerializer): slug_field = serializers.SlugField(source='slug_field', max_length=20, required=True) - + class Meta: model = self.SlugFieldModel - + s = SlugFieldSerializer(data={'slug_field': 'a b'}) - + self.assertEqual(s.is_valid(), False) self.assertEqual(s.errors, {'slug_field': ["Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."]}) @@ -839,7 +835,7 @@ class URLFieldTests(TestCase): 'max_length'), 20) -class HumanizedField(TestCase): +class FieldMetadata(TestCase): def setUp(self): self.required_field = Field() self.required_field.label = uuid4().hex @@ -849,41 +845,35 @@ class HumanizedField(TestCase): self.optional_field.label = uuid4().hex self.optional_field.required = False - def test_type(self): - for field in (self.required_field, self.optional_field): - self.assertEqual(field.humanized['type'], field.type_name) - def test_required(self): - self.assertEqual(self.required_field.humanized['required'], True) + self.assertEqual(self.required_field.metadata()['required'], True) def test_optional(self): - self.assertEqual(self.optional_field.humanized['required'], False) + self.assertEqual(self.optional_field.metadata()['required'], False) def test_label(self): for field in (self.required_field, self.optional_field): - self.assertEqual(field.humanized['label'], field.label) + self.assertEqual(field.metadata()['label'], field.label) -class HumanizableSerializer(Serializer): +class MetadataSerializer(Serializer): field1 = CharField(3, required=True) field2 = CharField(10, required=False) -class HumanizedSerializer(TestCase): +class MetadataSerializerTestCase(TestCase): def setUp(self): - self.serializer = HumanizableSerializer() + self.serializer = MetadataSerializer() - def test_humanized(self): - humanized = self.serializer.humanized + def test_serializer_metadata(self): + metadata = self.serializer.metadata() expected = { - 'field1': {u'required': True, - u'max_length': 3, - u'type': u'CharField', - u'read_only': False}, - 'field2': {u'required': False, - u'max_length': 10, - u'type': u'CharField', - u'read_only': False}} - self.assertEqual(set(expected.keys()), set(humanized.keys())) - for k, v in humanized.iteritems(): - self.assertEqual(v, expected[k]) + 'field1': {'required': True, + 'max_length': 3, + 'type': 'string', + 'read_only': False}, + 'field2': {'required': False, + 'max_length': 10, + 'type': 'string', + 'read_only': False}} + self.assertEqual(expected, metadata) diff --git a/rest_framework/tests/generics.py b/rest_framework/tests/generics.py index a2f8fb4b..f091d0db 100644 --- a/rest_framework/tests/generics.py +++ b/rest_framework/tests/generics.py @@ -122,21 +122,24 @@ class TestRootView(TestCase): ], 'name': 'Root', 'description': 'Example description for OPTIONS.', - 'actions': {} - } - expected['actions']['GET'] = {} - expected['actions']['POST'] = { - 'text': { - 'max_length': 100, - 'read_only': False, - 'required': True, - 'type': 'String', - }, - 'id': { - 'read_only': True, - 'required': False, - 'type': 'Integer', - }, + 'actions': { + 'POST': { + 'text': { + 'max_length': 100, + 'read_only': False, + 'required': True, + 'type': 'string', + "label": "Text comes here", + "help_text": "Text description." + }, + 'id': { + 'read_only': True, + 'required': False, + 'type': 'integer', + 'label': 'ID', + }, + } + } } self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data, expected) @@ -239,9 +242,9 @@ class TestInstanceView(TestCase): """ OPTIONS requests to RetrieveUpdateDestroyAPIView should return metadata """ - request = factory.options('/') - with self.assertNumQueries(0): - response = self.view(request).render() + request = factory.options('/1') + with self.assertNumQueries(1): + response = self.view(request, pk=1).render() expected = { 'parses': [ 'application/json', @@ -254,24 +257,25 @@ class TestInstanceView(TestCase): ], 'name': 'Instance', 'description': 'Example description for OPTIONS.', - 'actions': {} - } - for method in ('GET', 'DELETE'): - expected['actions'][method] = {} - for method in ('PATCH', 'PUT'): - expected['actions'][method] = { - 'text': { - 'max_length': 100, - 'read_only': False, - 'required': True, - 'type': 'String', - }, - 'id': { - 'read_only': True, - 'required': False, - 'type': 'Integer', - }, + 'actions': { + 'PUT': { + 'text': { + 'max_length': 100, + 'read_only': False, + 'required': True, + 'type': 'string', + 'label': 'Text comes here', + 'help_text': 'Text description.' + }, + 'id': { + 'read_only': True, + 'required': False, + 'type': 'integer', + 'label': 'ID', + }, + } } + } self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data, expected) diff --git a/rest_framework/tests/permissions.py b/rest_framework/tests/permissions.py index 5a18182b..6caaf65b 100644 --- a/rest_framework/tests/permissions.py +++ b/rest_framework/tests/permissions.py @@ -114,44 +114,41 @@ class ModelPermissionsIntegrationTests(TestCase): response = root_view(request, pk='1') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('actions', response.data) - self.assertEquals(response.data['actions'].keys(), ['POST', 'GET',]) + self.assertEqual(list(response.data['actions'].keys()), ['POST']) request = factory.options('/1', content_type='application/json', HTTP_AUTHORIZATION=self.permitted_credentials) response = instance_view(request, pk='1') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('actions', response.data) - self.assertEquals(response.data['actions'].keys(), ['PUT', 'PATCH', 'DELETE', 'GET',]) + self.assertEqual(list(response.data['actions'].keys()), ['PUT']) def test_options_disallowed(self): request = factory.options('/', content_type='application/json', HTTP_AUTHORIZATION=self.disallowed_credentials) response = root_view(request, pk='1') self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertIn('actions', response.data) - self.assertEquals(response.data['actions'].keys(), ['GET',]) + self.assertNotIn('actions', response.data) request = factory.options('/1', content_type='application/json', HTTP_AUTHORIZATION=self.disallowed_credentials) response = instance_view(request, pk='1') self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertIn('actions', response.data) - self.assertEquals(response.data['actions'].keys(), ['GET',]) + self.assertNotIn('actions', response.data) def test_options_updateonly(self): request = factory.options('/', content_type='application/json', HTTP_AUTHORIZATION=self.updateonly_credentials) response = root_view(request, pk='1') self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertIn('actions', response.data) - self.assertEquals(response.data['actions'].keys(), ['GET',]) + self.assertNotIn('actions', response.data) request = factory.options('/1', content_type='application/json', HTTP_AUTHORIZATION=self.updateonly_credentials) response = instance_view(request, pk='1') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('actions', response.data) - self.assertEquals(response.data['actions'].keys(), ['PUT', 'PATCH', 'GET',]) + self.assertEqual(list(response.data['actions'].keys()), ['PUT']) class OwnerModel(models.Model): diff --git a/rest_framework/tests/renderers.py b/rest_framework/tests/renderers.py index 9096c82d..cf3f4b46 100644 --- a/rest_framework/tests/renderers.py +++ b/rest_framework/tests/renderers.py @@ -6,6 +6,7 @@ from django.core.cache import cache from django.test import TestCase from django.test.client import RequestFactory from django.utils import unittest +from django.utils.translation import ugettext_lazy as _ from rest_framework import status, permissions from rest_framework.compat import yaml, etree, patterns, url, include from rest_framework.response import Response @@ -238,6 +239,13 @@ class JSONRendererTests(TestCase): Tests specific to the JSON Renderer """ + def test_render_lazy_strings(self): + """ + JSONRenderer should deal with lazy translated strings. + """ + ret = JSONRenderer().render(_('test')) + self.assertEqual(ret, b'"test"') + def test_without_content_type_args(self): """ Test basic JSON rendering. |
