aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/tests
diff options
context:
space:
mode:
Diffstat (limited to 'rest_framework/tests')
-rw-r--r--rest_framework/tests/fields.py54
-rw-r--r--rest_framework/tests/generics.py74
-rw-r--r--rest_framework/tests/permissions.py15
-rw-r--r--rest_framework/tests/renderers.py8
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.