Skip to content

Commit 129ddaa

Browse files
authored
Merge pull request Clever#46 from Clever/DEV-709
Handle unicode characters
2 parents ad98465 + c5e4fdc commit 129ddaa

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

clever/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ def request_raw(self, meth, url, params={}):
282282
def interpret_response(self, http_res):
283283
rbody, rcode= http_res['body'], http_res['code']
284284
try:
285-
resp = json.loads(rbody.decode()) if rcode != 429 else {'error': 'Too Many Requests'}
285+
resp = json.loads(rbody.decode('utf-8')) if rcode != 429 else {'error': 'Too Many Requests'}
286286
except Exception:
287287
raise APIError("Invalid response body from API: %s (HTTP response code was %d)" %
288288
(rbody, rcode), rbody, rcode)

test/test_clever.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ def setUp(self):
3232
clever.api_base = os.environ.get('CLEVER_API_BASE', 'https://api.clever.com')
3333
clever.set_token('DEMO_TOKEN')
3434

35+
#generates httmock responses for test_unicode_receive
36+
def unicode_content(url, request):
37+
return {'status_code': 200, 'content': '{"data": {"name": "Oh haiô"}}'}
3538

3639
class FunctionalTests(CleverTestCase):
3740

@@ -80,12 +83,17 @@ def test_unsupported_params(self):
8083
self.assertRaises(clever.CleverError, lambda: clever.District.all(limit=10))
8184
self.assertRaises(clever.CleverError, lambda: clever.District.all(page=2, limit=10))
8285

83-
def test_unicode(self):
84-
# Make sure unicode requests can be sent
86+
def test_unicode_send(self):
87+
# Make sure unicode requests can be sent. 404 error is a clever.APIError
8588
self.assertRaises(clever.APIError, clever.District.retrieve, id=u'☃')
8689

90+
def test_unicode_receive(self):
91+
with HTTMock(unicode_content):
92+
# Make sure unicode responses can be received.
93+
self.assertEqual(u'Oh haiô', clever.District.retrieve('something').name)
94+
8795
def test_none_values(self):
88-
district = clever.District.all(sort=None)[0]
96+
district = clever.District.all(count=None)[0]
8997
self.assertTrue(district.id)
9098

9199
def test_missing_id(self):

0 commit comments

Comments
 (0)