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. | 
