def test_do_post_json(self, mock_notifier, mock_debug, mock_request, mock_response): response = mock_response() response.status = 200 notifier = mock_notifier() mock_request.return_value = (response, '{"foo": "bar"}') http = FixcityHttp(notifier) content = http.do_post_json('http://example.com', "{'some key': 'some value'}") self.assertEqual(content, {'foo': 'bar'}) self.failIf(notifier.bounce.call_count)
def test_do_post_json__parse_error(self, mock_notifier, mock_log, mock_request, mock_response): response = mock_response() response.status = 200 notifier = mock_notifier() mock_request.return_value = (response, 'this is not my beautiful JSON') http = FixcityHttp(notifier) content = http.do_post_json('http://example.com', "{'some key': 'some value'}") self.assertEqual(content, None) self.assertEqual(notifier.on_server_error.call_count, 1) self.assertEqual(mock_log.call_count, 2)
def test_do_post_json__validation_errors(self, mock_notifier, mock_debug, mock_request, mock_response): response = mock_response() notifier = mock_notifier() response.status = 200 from django.utils import simplejson as json error_body = json.dumps( {'errors': {'title': ['This field is required.']}}) mock_request.return_value = (response, error_body) http = FixcityHttp(notifier) content = http.do_post_json('http://example.com', {'user': '******', 'some key': 'some value'}) self.assertEqual(content, json.loads(error_body)) self.assertEqual(notifier.on_user_error.call_count, 1)