class GetResponseExportFileTestCase(unittest.TestCase): def setUp(self): self.client = QualtricsAPIClient('http://qualtrics.com/api', 'token-456') def test_get_response_export_file_asserts_survey_id_and_file_id(self): with self.assertRaises(AssertionError): _ = self.client.get_response_export_file(None, 'file_id') with self.assertRaises(AssertionError): _ = self.client.get_response_export_file('SV_1234567890a', None) with self.assertRaises(AssertionError): _ = self.client.get_response_export_file(None, None) def test_get_response_export_file_validates_survey_id(self): with self.assertRaises(AssertionError): _ = self.client.get_response_export_file( 'invalid-format-survey-id', 'file_id') @responses.activate def test_makes_request_as_expected(self): file_bytes = bytes('Lorem ipsum dolor sit amet', 'utf-8') responses.add( responses.GET, 'http://qualtrics.com/api/surveys/SV_1234567890a/export-responses/file-0987/file', body=file_bytes) response = self.client.get_response_export_file( 'SV_1234567890a', 'file-0987') self.assertEqual(response, file_bytes) @responses.activate def test_raises_http_error_for_failed_requests(self): responses.add( responses.GET, 'http://qualtrics.com/api/surveys/SV_1234567890a/export-responses/file-0987/file', body='', status=404, json={'error': 'oh noes!'}) with self.assertRaises(requests.HTTPError): _, _ = self.client.get_response_export_file( 'SV_1234567890a', 'file-0987') responses.replace( responses.GET, 'http://qualtrics.com/api/surveys/SV_1234567890a/export-responses/file-0987/file', body='', status=500, json={'error': 'oh noes!'}) with self.assertRaises(requests.HTTPError): _, _ = self.client.get_response_export_file( 'SV_1234567890a', 'file-0987')
class GetResponseExportProgressTestCase(unittest.TestCase): def setUp(self): self.client = QualtricsAPIClient('http://qualtrics.com/api', 'token-456') def test_get_response_export_progress_asserts_survey_id_and_progress_id( self): with self.assertRaises(AssertionError): _ = self.client.get_response_export_progress(None, 'progress_id') with self.assertRaises(AssertionError): _ = self.client.get_response_export_progress( 'SV_1234567890a', None) with self.assertRaises(AssertionError): _ = self.client.get_response_export_progress(None, None) def test_get_response_export_progress_validates_survey_id(self): with self.assertRaises(AssertionError): _ = self.client.get_response_export_file( 'invalid-format-survey-id', 'file_id') @responses.activate def test_makes_request_as_expected(self): in_progress_json = { 'result': { 'fileId': None, 'percentComplete': 50.0, 'status': 'inProgress' }, 'meta': { 'requestId': '0842cbb3-0a52-4080-aec2-5d831e167c27', 'httpStatus': '200 - OK' } } responses.add( responses.GET, 'http://qualtrics.com/api/surveys/SV_1234567890a/export-responses/ES_9yn5UfrKkuuhxA1', json=in_progress_json) response, _ = self.client.get_response_export_progress( 'SV_1234567890a', 'ES_9yn5UfrKkuuhxA1') self.assertEqual(response, in_progress_json) self.assertIsNone(response['result']['fileId']) self.assertEqual(response['result']['status'], 'inProgress') complete_json = { 'result': { 'fileId': '0a52e70b-9dd7-4c88-b5d4-be21f8cc921b', 'percentComplete': 100.0, 'status': 'complete' }, 'meta': { 'requestId': '0842cbb3-0a52-4080-aec2-5d831e167c27', 'httpStatus': '200 - OK' } } responses.replace( responses.GET, 'http://qualtrics.com/api/surveys/SV_1234567890a/export-responses/ES_9yn5UfrKkuuhxA1', json=complete_json) response, file_id = self.client.get_response_export_progress( 'SV_1234567890a', 'ES_9yn5UfrKkuuhxA1') self.assertEqual(response, complete_json) self.assertEqual(response['result']['fileId'], file_id) self.assertEqual(response['result']['percentComplete'], 100.0) @responses.activate def test_raises_http_error_for_failed_requests(self): responses.add( responses.GET, 'http://qualtrics.com/api/surveys/SV_1234567890a/export-responses/ES_9yn5UfrKkuuhxA1', json={}, status=404) with self.assertRaises(requests.HTTPError): _, _ = self.client.get_response_export_progress( 'SV_1234567890a', 'ES_9yn5UfrKkuuhxA1') responses.replace( responses.GET, 'http://qualtrics.com/api/surveys/SV_1234567890a/export-responses/ES_9yn5UfrKkuuhxA1', json={}, status=500) with self.assertRaises(requests.HTTPError): _, _ = self.client.get_response_export_progress( 'SV_1234567890a', 'ES_9yn5UfrKkuuhxA1')