Skip to content

Commit

Permalink
Merge 85e9031 into af0f9ef
Browse files Browse the repository at this point in the history
  • Loading branch information
amureki committed Aug 22, 2018
2 parents af0f9ef + 85e9031 commit 7165da1
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 3 deletions.
7 changes: 4 additions & 3 deletions slumber/__init__.py
Expand Up @@ -85,14 +85,15 @@ def __call__(self, id=None, format=None, url_override=None):

def _request(self, method, data=None, files=None, params=None):
serializer = self._store["serializer"]
fmt = self._store['format']
url = self.url()

headers = {"accept": serializer.get_content_type()}
headers = {"accept": serializer.get_content_type(format=fmt)}

if not files:
if data is not None:
headers["content-type"] = serializer.get_content_type()
data = serializer.dumps(data)
headers["content-type"] = serializer.get_content_type(format=fmt)
data = serializer.dumps(data, format=fmt)

resp = self._store["session"].request(method, url, data=data, params=params, files=files, headers=headers)

Expand Down
22 changes: 22 additions & 0 deletions tests/resource.py
Expand Up @@ -626,3 +626,25 @@ def test_unicode_decodable_response(self):
resp = self.base_resource.post(data={'foo': 'bar'})
expected = b'Pr\xc3\xa9paratoire'.decode('utf8')
self.assertEqual(resp['result'], expected)

def test_resource_with_custom_format(self):
r = mock.Mock(spec=requests.Response)
r.status_code = 200
r.content = '{"result": ["a", "b", "c"]}'
r.headers = {"content-type": "application/json"}

self.base_resource._store.update({
"session": mock.Mock(spec=requests.Session),
"serializer": slumber.serialize.Serializer(),
})
self.base_resource._store["session"].request.return_value = r

resource = self.base_resource(format='yaml')
serializer = resource._store["serializer"]
fmt = resource._store['format']
content_type = serializer.get_content_type(format=fmt)
self.assertEqual(fmt, 'yaml')
self.assertEqual(content_type, 'text/yaml')

resp = self.base_resource(format='yaml').post(data={'foo': 'bar'})
self.assertEqual(resp['result'], ['a', 'b', 'c'])

0 comments on commit 7165da1

Please sign in to comment.