From 3ea1fe61a062c90ea052b3d5e4f950c23239752f Mon Sep 17 00:00:00 2001 From: Kostya Esmukov Date: Sun, 7 Feb 2016 18:58:19 +0300 Subject: [PATCH 1/2] Fixed _force_text_recursive typo --- rest_framework/exceptions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rest_framework/exceptions.py b/rest_framework/exceptions.py index 8447a9ded..29afaffe0 100644 --- a/rest_framework/exceptions.py +++ b/rest_framework/exceptions.py @@ -28,7 +28,7 @@ def _force_text_recursive(data): ] if isinstance(data, ReturnList): return ReturnList(ret, serializer=data.serializer) - return data + return ret elif isinstance(data, dict): ret = { key: _force_text_recursive(value) @@ -36,7 +36,7 @@ def _force_text_recursive(data): } if isinstance(data, ReturnDict): return ReturnDict(ret, serializer=data.serializer) - return data + return ret return force_text(data) From b6adfab9b252b53187e6477b233f98e9ecd7208e Mon Sep 17 00:00:00 2001 From: Kostya Esmukov Date: Sun, 7 Feb 2016 19:26:37 +0300 Subject: [PATCH 2/2] Added test case for #3908 --- tests/test_exceptions.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 tests/test_exceptions.py diff --git a/tests/test_exceptions.py b/tests/test_exceptions.py new file mode 100644 index 000000000..cec050eb8 --- /dev/null +++ b/tests/test_exceptions.py @@ -0,0 +1,21 @@ +from __future__ import unicode_literals + +from django.test import TestCase +from django.utils.translation import ugettext_lazy as _ + +from rest_framework.exceptions import _force_text_recursive + + +class ExceptionTestCase(TestCase): + + def test_force_text_recursive(self): + + s = "sfdsfggiuytraetfdlklj" + self.assertEqual(_force_text_recursive(_(s)), s) + self.assertEqual(type(_force_text_recursive(_(s))), type(s)) + + self.assertEqual(_force_text_recursive({'a': _(s)})['a'], s) + self.assertEqual(type(_force_text_recursive({'a': _(s)})['a']), type(s)) + + self.assertEqual(_force_text_recursive([[_(s)]])[0][0], s) + self.assertEqual(type(_force_text_recursive([[_(s)]])[0][0]), type(s))