Add unicode support for the options parameter
This commit is contained in:
parent
d43c8fb379
commit
566f897ace
3 changed files with 28 additions and 29 deletions
|
@ -70,15 +70,15 @@ class TestActivitiesList(TestActivities):
|
||||||
|
|
||||||
@mock.patch.object(trovebox.Trovebox, 'get')
|
@mock.patch.object(trovebox.Trovebox, 'get')
|
||||||
def test_options(self, mock_get):
|
def test_options(self, mock_get):
|
||||||
"""Check that the activity list optionss are applied properly"""
|
"""Check that the activity list options are applied properly"""
|
||||||
mock_get.return_value = self._return_value(self.test_activities_dict)
|
mock_get.return_value = self._return_value(self.test_activities_dict)
|
||||||
self.client.activities.list(options={"foo": "bar",
|
self.client.activities.list(options={"foo": "bar",
|
||||||
"test1": "test2"},
|
"test1": "\xfcmlaut"},
|
||||||
foo="bar")
|
foo="bar")
|
||||||
# Dict element can be any order
|
# Dict element can be any order
|
||||||
self.assertIn(mock_get.call_args[0],
|
self.assertIn(mock_get.call_args[0],
|
||||||
[("/activities/foo-bar/test1-test2/list.json",),
|
[("/activities/foo-bar/test1-%C3%BCmlaut/list.json",),
|
||||||
("/activities/test1-test2/foo-bar/list.json",)])
|
("/activities/test1-%C3%BCmlaut/foo-bar/list.json",)])
|
||||||
self.assertEqual(mock_get.call_args[1], {"foo": "bar"})
|
self.assertEqual(mock_get.call_args[1], {"foo": "bar"})
|
||||||
|
|
||||||
class TestActivitiesPurge(TestActivities):
|
class TestActivitiesPurge(TestActivities):
|
||||||
|
|
|
@ -57,27 +57,27 @@ class TestPhotosList(TestPhotos):
|
||||||
|
|
||||||
@mock.patch.object(trovebox.Trovebox, 'get')
|
@mock.patch.object(trovebox.Trovebox, 'get')
|
||||||
def test_options(self, mock_get):
|
def test_options(self, mock_get):
|
||||||
"""Check that the activity list options are applied properly"""
|
"""Check that the photo list options are applied properly"""
|
||||||
mock_get.return_value = self._return_value(self.test_photos_dict)
|
mock_get.return_value = self._return_value(self.test_photos_dict)
|
||||||
self.client.photos.list(options={"foo": "bar",
|
self.client.photos.list(options={"foo": "bar",
|
||||||
"test1": "test2"},
|
"test1": "\xfcmlaut"},
|
||||||
foo="bar")
|
foo="bar")
|
||||||
# Dict element can be any order
|
# Dict element can be any order
|
||||||
self.assertIn(mock_get.call_args[0],
|
self.assertIn(mock_get.call_args[0],
|
||||||
[("/photos/foo-bar/test1-test2/list.json",),
|
[("/photos/foo-bar/test1-%C3%BCmlaut/list.json",),
|
||||||
("/photos/test1-test2/foo-bar/list.json",)])
|
("/photos/test1-%C3%BCmlaut/foo-bar/list.json",)])
|
||||||
self.assertEqual(mock_get.call_args[1], {"foo": "bar"})
|
self.assertEqual(mock_get.call_args[1], {"foo": "bar"})
|
||||||
|
|
||||||
class TestPhotosShare(TestPhotos):
|
class TestPhotosShare(TestPhotos):
|
||||||
@mock.patch.object(trovebox.Trovebox, 'post')
|
@mock.patch.object(trovebox.Trovebox, 'post')
|
||||||
def test_photos_share(self, mock_post):
|
def test_photos_share(self, mock_post):
|
||||||
self.client.photos.share(options={"foo": "bar",
|
self.client.photos.share(options={"foo": "bar",
|
||||||
"test1": "test2"},
|
"test1": "\xfcmlaut"},
|
||||||
foo="bar")
|
foo="bar")
|
||||||
# Dict element can be any order
|
# Dict element can be any order
|
||||||
self.assertIn(mock_post.call_args[0],
|
self.assertIn(mock_post.call_args[0],
|
||||||
[("/photos/foo-bar/test1-test2/share.json",),
|
[("/photos/foo-bar/test1-%C3%BCmlaut/share.json",),
|
||||||
("/photos/test1-test2/foo-bar/share.json",)])
|
("/photos/test1-%C3%BCmlaut/foo-bar/share.json",)])
|
||||||
self.assertEqual(mock_post.call_args[1], {"foo": "bar"})
|
self.assertEqual(mock_post.call_args[1], {"foo": "bar"})
|
||||||
|
|
||||||
class TestPhotosUpdate(TestPhotos):
|
class TestPhotosUpdate(TestPhotos):
|
||||||
|
@ -363,12 +363,12 @@ class TestPhotoView(TestPhotos):
|
||||||
mock_get.return_value = self._return_value(self.test_photos_dict[1])
|
mock_get.return_value = self._return_value(self.test_photos_dict[1])
|
||||||
result = self.client.photo.view(self.test_photos[0],
|
result = self.client.photo.view(self.test_photos[0],
|
||||||
options={"foo": "bar",
|
options={"foo": "bar",
|
||||||
"test1": "test2"},
|
"test1": "\xfcmlaut"},
|
||||||
returnSizes="20x20")
|
returnSizes="20x20")
|
||||||
# Dict elemet can be in any order
|
# Dict elemet can be in any order
|
||||||
self.assertIn(mock_get.call_args[0],
|
self.assertIn(mock_get.call_args[0],
|
||||||
[("/photo/1a/foo-bar/test1-test2/view.json",),
|
[("/photo/1a/foo-bar/test1-%C3%BCmlaut/view.json",),
|
||||||
("/photo/1a/test1-test2/foo-bar/view.json",)])
|
("/photo/1a/test1-%C3%BCmlaut/foo-bar/view.json",)])
|
||||||
self.assertEqual(mock_get.call_args[1], {"returnSizes": "20x20"})
|
self.assertEqual(mock_get.call_args[1], {"returnSizes": "20x20"})
|
||||||
self.assertEqual(result.get_fields(), self.test_photos_dict[1])
|
self.assertEqual(result.get_fields(), self.test_photos_dict[1])
|
||||||
|
|
||||||
|
@ -378,13 +378,13 @@ class TestPhotoView(TestPhotos):
|
||||||
mock_get.return_value = self._return_value(self.test_photos_dict[1])
|
mock_get.return_value = self._return_value(self.test_photos_dict[1])
|
||||||
result = self.client.photo.view("1a",
|
result = self.client.photo.view("1a",
|
||||||
options={"foo": "bar",
|
options={"foo": "bar",
|
||||||
"test1": "test2"},
|
"test1": "\xfcmlaut"},
|
||||||
returnSizes="20x20")
|
returnSizes="20x20")
|
||||||
|
|
||||||
# Dict elemet can be in any order
|
# Dict elemet can be in any order
|
||||||
self.assertIn(mock_get.call_args[0],
|
self.assertIn(mock_get.call_args[0],
|
||||||
[("/photo/1a/foo-bar/test1-test2/view.json",),
|
[("/photo/1a/foo-bar/test1-%C3%BCmlaut/view.json",),
|
||||||
("/photo/1a/test1-test2/foo-bar/view.json",)])
|
("/photo/1a/test1-%C3%BCmlaut/foo-bar/view.json",)])
|
||||||
self.assertEqual(mock_get.call_args[1], {"returnSizes": "20x20"})
|
self.assertEqual(mock_get.call_args[1], {"returnSizes": "20x20"})
|
||||||
self.assertEqual(result.get_fields(), self.test_photos_dict[1])
|
self.assertEqual(result.get_fields(), self.test_photos_dict[1])
|
||||||
|
|
||||||
|
@ -455,12 +455,12 @@ class TestPhotoNextPrevious(TestPhotos):
|
||||||
"previous": [self.test_photos_dict[1]]})
|
"previous": [self.test_photos_dict[1]]})
|
||||||
result = self.client.photo.next_previous(self.test_photos[0],
|
result = self.client.photo.next_previous(self.test_photos[0],
|
||||||
options={"foo": "bar",
|
options={"foo": "bar",
|
||||||
"test1": "test2"},
|
"test1": "\xfcmlaut"},
|
||||||
foo="bar")
|
foo="bar")
|
||||||
# Dict elemet can be in any order
|
# Dict elemet can be in any order
|
||||||
self.assertIn(mock_get.call_args[0],
|
self.assertIn(mock_get.call_args[0],
|
||||||
[("/photo/1a/nextprevious/foo-bar/test1-test2.json",),
|
[("/photo/1a/nextprevious/foo-bar/test1-%C3%BCmlaut.json",),
|
||||||
("/photo/1a/nextprevious/test1-test2/foo-bar.json",)])
|
("/photo/1a/nextprevious/test1-%C3%BCmlaut/foo-bar.json",)])
|
||||||
self.assertEqual(mock_get.call_args[1], {"foo": "bar"})
|
self.assertEqual(mock_get.call_args[1], {"foo": "bar"})
|
||||||
self.assertEqual(result["next"][0].get_fields(),
|
self.assertEqual(result["next"][0].get_fields(),
|
||||||
self.test_photos_dict[0])
|
self.test_photos_dict[0])
|
||||||
|
@ -478,12 +478,12 @@ class TestPhotoNextPrevious(TestPhotos):
|
||||||
"previous": [self.test_photos_dict[1]]})
|
"previous": [self.test_photos_dict[1]]})
|
||||||
result = self.client.photo.next_previous("1a",
|
result = self.client.photo.next_previous("1a",
|
||||||
options={"foo": "bar",
|
options={"foo": "bar",
|
||||||
"test1": "test2"},
|
"test1": "\xfcmlaut"},
|
||||||
foo="bar")
|
foo="bar")
|
||||||
# Dict elemet can be in any order
|
# Dict elemet can be in any order
|
||||||
self.assertIn(mock_get.call_args[0],
|
self.assertIn(mock_get.call_args[0],
|
||||||
[("/photo/1a/nextprevious/foo-bar/test1-test2.json",),
|
[("/photo/1a/nextprevious/foo-bar/test1-%C3%BCmlaut.json",),
|
||||||
("/photo/1a/nextprevious/test1-test2/foo-bar.json",)])
|
("/photo/1a/nextprevious/test1-%C3%BCmlaut/foo-bar.json",)])
|
||||||
self.assertEqual(mock_get.call_args[1], {"foo": "bar"})
|
self.assertEqual(mock_get.call_args[1], {"foo": "bar"})
|
||||||
self.assertEqual(result["next"][0].get_fields(),
|
self.assertEqual(result["next"][0].get_fields(),
|
||||||
self.test_photos_dict[0])
|
self.test_photos_dict[0])
|
||||||
|
@ -500,12 +500,12 @@ class TestPhotoNextPrevious(TestPhotos):
|
||||||
{"next": [self.test_photos_dict[0]],
|
{"next": [self.test_photos_dict[0]],
|
||||||
"previous": [self.test_photos_dict[1]]})
|
"previous": [self.test_photos_dict[1]]})
|
||||||
result = self.test_photos[0].next_previous(options={"foo": "bar",
|
result = self.test_photos[0].next_previous(options={"foo": "bar",
|
||||||
"test1": "test2"},
|
"test1": "\xfcmlaut"},
|
||||||
foo="bar")
|
foo="bar")
|
||||||
# Dict elemet can be in any order
|
# Dict elemet can be in any order
|
||||||
self.assertIn(mock_get.call_args[0],
|
self.assertIn(mock_get.call_args[0],
|
||||||
[("/photo/1a/nextprevious/foo-bar/test1-test2.json",),
|
[("/photo/1a/nextprevious/foo-bar/test1-%C3%BCmlaut.json",),
|
||||||
("/photo/1a/nextprevious/test1-test2/foo-bar.json",)])
|
("/photo/1a/nextprevious/test1-%C3%BCmlaut/foo-bar.json",)])
|
||||||
self.assertEqual(mock_get.call_args[1], {"foo": "bar"})
|
self.assertEqual(mock_get.call_args[1], {"foo": "bar"})
|
||||||
self.assertEqual(result["next"][0].get_fields(),
|
self.assertEqual(result["next"][0].get_fields(),
|
||||||
self.test_photos_dict[0])
|
self.test_photos_dict[0])
|
||||||
|
|
|
@ -12,8 +12,7 @@ class ApiBase(object):
|
||||||
def __init__(self, client):
|
def __init__(self, client):
|
||||||
self._client = client
|
self._client = client
|
||||||
|
|
||||||
@staticmethod
|
def _build_option_string(self, options):
|
||||||
def _build_option_string(options):
|
|
||||||
"""
|
"""
|
||||||
:param options: dictionary containing the options
|
:param options: dictionary containing the options
|
||||||
:returns: option_string formatted for an API endpoint
|
:returns: option_string formatted for an API endpoint
|
||||||
|
@ -22,7 +21,7 @@ class ApiBase(object):
|
||||||
if options is not None:
|
if options is not None:
|
||||||
for key in options:
|
for key in options:
|
||||||
option_string += "/%s-%s" % (key, options[key])
|
option_string += "/%s-%s" % (key, options[key])
|
||||||
return option_string
|
return self._quote_url(option_string)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _extract_id(obj):
|
def _extract_id(obj):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue