Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 4826211

Browse files
abdulhaq-ejerel
authored andcommitted
better handling for unicode, should fix some tests
1 parent 3da9492 commit 4826211

File tree

11 files changed

+334
-222
lines changed

11 files changed

+334
-222
lines changed

‎conftest.py‎

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +0,0 @@
1-
import os
2-
3-
4-
def pytest_configure():
5-
from django.conf import settings
6-
try:
7-
from django import setup
8-
except ImportError:
9-
setup = lambda: None
10-
11-
os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings'
12-
setup()

‎example/api/resources/identity.py‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
from django.contrib.auth import models as auth_models
2+
from django.utils import encoding
3+
24
from rest_framework import viewsets, generics, renderers, parsers, serializers
35
from rest_framework.decorators import list_route, detail_route
46
from rest_framework.response import Response
@@ -31,8 +33,8 @@ def posts(self, request):
3133
posts = [{'id': 1, 'title': 'Test Blog Post'}]
3234

3335
data = {
34-
u'identities': IdentitySerializer(identities, many=True).data,
35-
u'posts': PostSerializer(posts, many=True).data,
36+
encoding.force_text('identities'): IdentitySerializer(identities, many=True).data,
37+
encoding.force_text('posts'): PostSerializer(posts, many=True).data,
3638
}
3739
return Response(utils.format_keys(data, format_type='camelize'))
3840

‎example/tests/test_format_keys.py‎

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import json
2-
3-
from example.tests import TestBase
4-
51
from django.contrib.auth import get_user_model
62
from django.core.urlresolvers import reverse
73
from django.conf import settings
4+
from django.utils import encoding
5+
6+
from example.tests import TestBase
7+
from example.tests.utils import dump_json, redump_json
88

99

1010
class FormatKeysSetTests(TestBase):
@@ -18,7 +18,8 @@ def setUp(self):
1818
self.detail_url = reverse('user-detail', kwargs={'pk': self.miles.pk})
1919

2020
# Set the format keys settings.
21-
setattr(settings, 'JSON_API_FORMAT_KEYS', 'camelization')
21+
setattr(settings, 'JSON_API_FORMAT_KEYS', 'camelize')
22+
# CAMELIZE capitalize the type, needs to be checked
2223

2324
def tearDown(self):
2425
# Remove the format keys settings.
@@ -34,20 +35,33 @@ def test_camelization(self):
3435

3536
user = get_user_model().objects.all()[0]
3637
expected = {
37-
u'data': {
38-
u'type': u'users',
39-
u'id': user.pk,
40-
u'attributes': {
41-
u'firstName': user.first_name,
42-
u'lastName': user.last_name,
43-
u'email': user.email
44-
},
38+
'data': [
39+
{
40+
'type': 'Users',
41+
'id': encoding.force_text(user.pk),
42+
'attributes': {
43+
'firstName': user.first_name,
44+
'lastName': user.last_name,
45+
'email': user.email
46+
},
47+
}
48+
],
49+
'links': {
50+
'first': 'http://testserver/identities?page=1',
51+
'last': 'http://testserver/identities?page=2',
52+
'next': 'http://testserver/identities?page=2',
53+
'prev': None
54+
},
55+
'meta': {
56+
'pagination': {
57+
'page': 1,
58+
'pages': 2,
59+
'count': 2
60+
}
4561
}
4662
}
4763

48-
json_content = json.loads(response.content.decode('utf8'))
49-
links = json_content.get('links')
64+
content_dump = redump_json(response.content)
65+
expected_dump = dump_json(expected)
5066

51-
self.assertEquals(expected.get('users'), json_content.get('users'))
52-
self.assertEqual(u'http://testserver/identities?page=2',
53-
links.get('next'))
67+
assert expected_dump == content_dump

‎example/tests/test_generic_validation.py‎

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
import json
2-
fromexample.testsimportTestBase
2+
33
from django.core.urlresolvers import reverse
44
from django.conf import settings
5+
56
from rest_framework.serializers import ValidationError
67

8+
from example.tests import TestBase
9+
from example.tests.utils import dump_json, redump_json
10+
711

812
class GenericValidationTest(TestBase):
913
"""
@@ -20,7 +24,6 @@ def test_generic_validation_error(self):
2024
response = self.client.get(self.url)
2125
self.assertEqual(response.status_code, 400)
2226

23-
result = json.loads(response.content.decode('utf8'))
2427
expected = {
2528
'errors': [{
2629
'status': '400',
@@ -30,4 +33,8 @@ def test_generic_validation_error(self):
3033
'detail': 'Oh nohs!'
3134
}]
3235
}
33-
self.assertEqual(result, expected)
36+
37+
content_dump = redump_json(response.content)
38+
expected_dump = dump_json(expected)
39+
40+
assert expected_dump == content_dump

‎example/tests/test_generic_viewset.py‎

Lines changed: 42 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import json
2-
fromexample.testsimportTestBase
2+
33
from django.core.urlresolvers import reverse
44
from django.conf import settings
55

6+
from example.tests import TestBase
7+
from example.tests.utils import dump_json, redump_json
8+
69

710
class GenericViewSet(TestBase):
811
"""
@@ -17,15 +20,19 @@ def test_default_rest_framework_behavior(self):
1720
response = self.client.get(url)
1821

1922
self.assertEqual(200, response.status_code)
20-
self.assertEqual(
21-
json.loads(response.content.decode('utf8')),
22-
{
23-
'id': 2,
24-
'first_name': u'Miles',
25-
'last_name': u'Davis',
26-
'email': u'miles@example.com'
27-
}
28-
)
23+
24+
expected = {
25+
'id': 2,
26+
'first_name': 'Miles',
27+
'last_name': 'Davis',
28+
'email': 'miles@example.com'
29+
}
30+
31+
content_dump = redump_json(response.content)
32+
expected_dump = dump_json(expected)
33+
34+
assert expected_dump == content_dump
35+
2936

3037
def test_ember_expected_renderer(self):
3138
"""
@@ -36,20 +43,23 @@ def test_ember_expected_renderer(self):
3643

3744
response = self.client.get(url)
3845
self.assertEqual(200, response.status_code)
39-
self.assertEqual(
40-
json.loads(response.content.decode('utf8')),
41-
{
42-
'data': {
43-
'type': 'data',
44-
'id': '2',
45-
'attributes': {
46-
'first-name': u'Miles',
47-
'last-name': u'Davis',
48-
'email': u'miles@example.com'
49-
}
46+
47+
expected = {
48+
'data': {
49+
'type': 'data',
50+
'id': '2',
51+
'attributes': {
52+
'first-name': 'Miles',
53+
'last-name': 'Davis',
54+
'email': 'miles@example.com'
5055
}
5156
}
52-
)
57+
}
58+
59+
content_dump = redump_json(response.content)
60+
expected_dump = dump_json(expected)
61+
62+
assert expected_dump == content_dump
5363

5464
def test_default_validation_exceptions(self):
5565
"""
@@ -75,7 +85,11 @@ def test_default_validation_exceptions(self):
7585
}
7686
response = self.client.post('/identities', {
7787
'email': 'bar', 'first_name': 'alajflajaljalajlfjafljalj'})
78-
self.assertEqual(json.loads(response.content.decode('utf8')), expected)
88+
89+
content_dump = redump_json(response.content)
90+
expected_dump = dump_json(expected)
91+
92+
assert expected_dump == content_dump
7993

8094
def test_custom_validation_exceptions(self):
8195
"""
@@ -99,4 +113,8 @@ def test_custom_validation_exceptions(self):
99113
}
100114
response = self.client.post('/identities', {
101115
'email': 'bar', 'last_name': 'alajflajaljalajlfjafljalj'})
102-
self.assertEqual(json.loads(response.content.decode('utf8')), expected)
116+
117+
content_dump = redump_json(response.content)
118+
expected_dump = dump_json(expected)
119+
120+
assert expected_dump == content_dump

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /