Skip to content

Commit 7392bee

Browse files
SK-2142 fix insert response, invoke connection and unit tests
1 parent 8b6a2c4 commit 7392bee

3 files changed

Lines changed: 13 additions & 4 deletions

File tree

skyflow/utils/_utils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,8 @@ def parse_insert_response(api_response, continue_on_error):
238238
error = {
239239
'request_index': idx,
240240
'request_id': request_id,
241-
'error': response['Body']['error']
241+
'error': response['Body']['error'],
242+
'http_code': response['Status'],
242243
}
243244
errors.append(error)
244245

@@ -352,7 +353,7 @@ def parse_invoke_connection_response(api_response: requests.Response):
352353
if 'x-request-id' in api_response.headers:
353354
metadata['request_id'] = api_response.headers['x-request-id']
354355

355-
return InvokeConnectionResponse(data=data, metadata=metadata)
356+
return InvokeConnectionResponse(data=data, metadata=metadata, errors=None)
356357
except Exception as e:
357358
raise SkyflowError(SkyflowMessages.Error.RESPONSE_NOT_JSON.value.format(content), status_code)
358359
except HTTPError:
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
class InvokeConnectionResponse:
2-
def __init__(self, data=None, metadata=None):
2+
def __init__(self, data=None, metadata=None, errors=None):
33
self.data = data
44
self.metadata = metadata if metadata else {}
5+
self.errors = errors if errors else None
56

67
def __repr__(self):
7-
return f"ConnectionResponse('data'={self.data},'metadata'={self.metadata})"
8+
return f"ConnectionResponse('data'={self.data},'metadata'={self.metadata}), 'errors'={self.errors})"
89

910
def __str__(self):
1011
return self.__repr__()

tests/utils/test__utils.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,12 @@ def test_parse_insert_response(self):
252252
result = parse_insert_response(api_response, continue_on_error=True)
253253
self.assertEqual(len(result.inserted_fields), 1)
254254
self.assertEqual(len(result.errors), 1)
255+
# Assert first successful record
256+
self.assertEqual(result.inserted_fields[0]["skyflow_id"], "id1")
257+
# Assert error record
258+
self.assertEqual(result.errors[0]["error"], TEST_ERROR_MESSAGE)
259+
self.assertEqual(result.errors[0]["http_code"], 400)
260+
self.assertEqual(result.errors[0]["request_id"], "12345")
255261

256262
def test_parse_insert_response_continue_on_error_false(self):
257263
mock_api_response = Mock()
@@ -384,6 +390,7 @@ def test_parse_invoke_connection_response_successful(self, mock_response):
384390
self.assertIsInstance(result, InvokeConnectionResponse)
385391
self.assertEqual(result.data["key"], "value")
386392
self.assertEqual(result.metadata["request_id"], "1234")
393+
self.assertEqual(result.errors, None)
387394

388395
@patch("requests.Response")
389396
def test_parse_invoke_connection_response_json_decode_error(self, mock_response):

0 commit comments

Comments
 (0)