diff options
Diffstat (limited to 'rest_framework/tests/fields.py')
| -rw-r--r-- | rest_framework/tests/fields.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/rest_framework/tests/fields.py b/rest_framework/tests/fields.py index dad69975..7a5ed718 100644 --- a/rest_framework/tests/fields.py +++ b/rest_framework/tests/fields.py @@ -4,6 +4,9 @@ General serializer field tests. from __future__ import unicode_literals from django.utils.datastructures import SortedDict import datetime +from rest_framework.fields import (humanize_field, humanize_field_type, + humanize_form_fields) +from django import forms from decimal import Decimal from django.db import models from django.test import TestCase @@ -11,6 +14,9 @@ from django.core import validators from rest_framework import serializers from rest_framework.serializers import Serializer from rest_framework.tests.models import RESTFrameworkModel +from rest_framework.fields import Field +from collections import namedtuple +from uuid import uuid4 class TimestampedModel(models.Model): @@ -809,3 +815,75 @@ class URLFieldTests(TestCase): serializer = URLFieldSerializer(data={}) self.assertEqual(serializer.is_valid(), True) self.assertEqual(getattr(serializer.fields['url_field'], 'max_length'), 20) + + +class HumanizedFieldType(TestCase): + def test_standard_type_classes(self): + for field_type_name in forms.fields.__all__: + field_type = getattr(forms.fields, field_type_name) + humanized = humanize_field_type(field_type) + self.assert_valid_name(humanized) + + def test_standard_type_names(self): + for field_type_name in forms.fields.__all__: + humanized = humanize_field_type(field_type_name) + self.assert_valid_name(humanized) + + def test_custom_type_name(self): + humanized = humanize_field_type('SomeCustomType') + self.assertEquals(humanized, u'Some custom type') + + def test_custom_type(self): + custom_type = namedtuple('SomeCustomType', []) + humanized = humanize_field_type(custom_type) + self.assertEquals(humanized, u'Some custom type') + + def assert_valid_name(self, humanized): + """A humanized field name is valid if it's a non-empty + unicode. + + """ + self.assertIsInstance(humanized, unicode) + self.assertTrue(humanized) + + +class HumanizedField(TestCase): + def setUp(self): + self.required_field = Field() + self.required_field.label = uuid4().hex + self.required_field.required = True + + self.optional_field = Field() + self.optional_field.label = uuid4().hex + self.optional_field.required = False + + def test_required(self): + self.assertEqual(humanize_field(self.required_field)['required'], True) + + def test_optional(self): + self.assertEqual(humanize_field(self.optional_field)['required'], + False) + + def test_label(self): + for field in (self.required_field, self.optional_field): + self.assertEqual(humanize_field(field)['label'], field.label) + + +class Form(forms.Form): + field1 = forms.CharField(max_length=3, label='field one') + field2 = forms.CharField(label='field two') + + +class HumanizedSerializer(TestCase): + def setUp(self): + self.serializer = TimestampedModelSerializer() + + def test_humanized(self): + humanized = humanize_form_fields(Form()) + self.assertEqual(humanized, { + 'field1': { + u'help_text': u'', u'required': True, + u'type': u'Single Character', u'label': 'field one'}, + 'field2': { + u'help_text': u'', u'required': True, + u'type': u'Single Character', u'label': 'field two'}}) |
