diff options
| author | Serhiy Voyt | 2014-06-27 18:10:50 +0300 | 
|---|---|---|
| committer | Serhiy Voyt | 2014-06-27 18:10:50 +0300 | 
| commit | 3326ddc865154b0c09fc3bb0da2644f0dfc3bc24 (patch) | |
| tree | 6df4c5adf05460fc2949e74efbc57dec80d789dc /rest_framework/tests | |
| parent | 4e6a21344fd1fda28d1d63c5aa697fac5e9f8029 (diff) | |
| parent | 636ae419be2882dbec8151b6baa60bde118faede (diff) | |
| download | django-rest-framework-3326ddc865154b0c09fc3bb0da2644f0dfc3bc24.tar.bz2 | |
Merge branch 'master' into modelserialization-charfield-with-null
Diffstat (limited to 'rest_framework/tests')
| -rw-r--r-- | rest_framework/tests/test_fields.py | 24 | ||||
| -rw-r--r-- | rest_framework/tests/test_serializers.py | 5 | ||||
| -rw-r--r-- | rest_framework/tests/test_views.py | 16 | 
3 files changed, 38 insertions, 7 deletions
diff --git a/rest_framework/tests/test_fields.py b/rest_framework/tests/test_fields.py index e127feef..b04b947f 100644 --- a/rest_framework/tests/test_fields.py +++ b/rest_framework/tests/test_fields.py @@ -4,6 +4,7 @@ General serializer field tests.  from __future__ import unicode_literals  import datetime +import re  from decimal import Decimal  from uuid import uuid4  from django.core import validators @@ -103,6 +104,16 @@ class BasicFieldTests(TestCase):          keys = list(field.to_native(ret).keys())          self.assertEqual(keys, ['c', 'b', 'a', 'z']) +    def test_widget_html_attributes(self): +        """ +        Make sure widget_html() renders the correct attributes +        """ +        r = re.compile('(\S+)=["\']?((?:.(?!["\']?\s+(?:\S+)=|[>"\']))+.)["\']?') +        form = TimeFieldModelSerializer().data +        attributes = r.findall(form.fields['clock'].widget_html()) +        self.assertIn(('name', 'clock'), attributes) +        self.assertIn(('id', 'clock'), attributes) +  class DateFieldTest(TestCase):      """ @@ -312,7 +323,7 @@ class DateTimeFieldTest(TestCase):              f.from_native('04:61:59')          except validators.ValidationError as e:              self.assertEqual(e.messages, ["Datetime has wrong format. Use one of these formats instead: " -                                          "YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HHMM|-HHMM|Z]"]) +                                          "YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z]"])          else:              self.fail("ValidationError was not properly raised") @@ -326,7 +337,7 @@ class DateTimeFieldTest(TestCase):              f.from_native('04 -- 31')          except validators.ValidationError as e:              self.assertEqual(e.messages, ["Datetime has wrong format. Use one of these formats instead: " -                                          "YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HHMM|-HHMM|Z]"]) +                                          "YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z]"])          else:              self.fail("ValidationError was not properly raised") @@ -706,6 +717,15 @@ class ChoiceFieldTests(TestCase):          f = serializers.ChoiceField(required=False, choices=SAMPLE_CHOICES)          self.assertEqual(f.choices, models.fields.BLANK_CHOICE_DASH + SAMPLE_CHOICES) +    def test_blank_choice_display(self): +        blank = 'No Preference' +        f = serializers.ChoiceField( +            required=False, +            choices=SAMPLE_CHOICES, +            blank_display_value=blank, +        ) +        self.assertEqual(f.choices, [('', blank)] + SAMPLE_CHOICES) +      def test_invalid_choice_model(self):          s = ChoiceFieldModelSerializer(data={'choice': 'wrong_value'})          self.assertFalse(s.is_valid()) diff --git a/rest_framework/tests/test_serializers.py b/rest_framework/tests/test_serializers.py index 082a400c..120510ac 100644 --- a/rest_framework/tests/test_serializers.py +++ b/rest_framework/tests/test_serializers.py @@ -3,6 +3,7 @@ from django.test import TestCase  from rest_framework.serializers import _resolve_model  from rest_framework.tests.models import BasicModel +from rest_framework.compat import six  class ResolveModelTests(TestCase): @@ -19,6 +20,10 @@ class ResolveModelTests(TestCase):          resolved_model = _resolve_model('tests.BasicModel')          self.assertEqual(resolved_model, BasicModel) +    def test_resolve_unicode_representation(self): +        resolved_model = _resolve_model(six.text_type('tests.BasicModel')) +        self.assertEqual(resolved_model, BasicModel) +      def test_resolve_non_django_model(self):          with self.assertRaises(ValueError):              _resolve_model(TestCase) diff --git a/rest_framework/tests/test_views.py b/rest_framework/tests/test_views.py index 65c7e50e..77b113ee 100644 --- a/rest_framework/tests/test_views.py +++ b/rest_framework/tests/test_views.py @@ -1,5 +1,6 @@  from __future__ import unicode_literals +import sys  import copy  from django.test import TestCase  from rest_framework import status @@ -11,6 +12,11 @@ from rest_framework.views import APIView  factory = APIRequestFactory() +if sys.version_info[:2] >= (3, 4): +    JSON_ERROR = 'JSON parse error - Expecting value:' +else: +    JSON_ERROR = 'JSON parse error - No JSON object could be decoded' +  class BasicView(APIView):      def get(self, request, *args, **kwargs): @@ -48,7 +54,7 @@ def sanitise_json_error(error_dict):      of json.      """      ret = copy.copy(error_dict) -    chop = len('JSON parse error - No JSON object could be decoded') +    chop = len(JSON_ERROR)      ret['detail'] = ret['detail'][:chop]      return ret @@ -61,7 +67,7 @@ class ClassBasedViewIntegrationTests(TestCase):          request = factory.post('/', 'f00bar', content_type='application/json')          response = self.view(request)          expected = { -            'detail': 'JSON parse error - No JSON object could be decoded' +            'detail': JSON_ERROR          }          self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)          self.assertEqual(sanitise_json_error(response.data), expected) @@ -76,7 +82,7 @@ class ClassBasedViewIntegrationTests(TestCase):          request = factory.post('/', form_data)          response = self.view(request)          expected = { -            'detail': 'JSON parse error - No JSON object could be decoded' +            'detail': JSON_ERROR          }          self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)          self.assertEqual(sanitise_json_error(response.data), expected) @@ -90,7 +96,7 @@ class FunctionBasedViewIntegrationTests(TestCase):          request = factory.post('/', 'f00bar', content_type='application/json')          response = self.view(request)          expected = { -            'detail': 'JSON parse error - No JSON object could be decoded' +            'detail': JSON_ERROR          }          self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)          self.assertEqual(sanitise_json_error(response.data), expected) @@ -105,7 +111,7 @@ class FunctionBasedViewIntegrationTests(TestCase):          request = factory.post('/', form_data)          response = self.view(request)          expected = { -            'detail': 'JSON parse error - No JSON object could be decoded' +            'detail': JSON_ERROR          }          self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)          self.assertEqual(sanitise_json_error(response.data), expected)  | 
