first commit
This commit is contained in:
44
test_batch_get.py
Normal file
44
test_batch_get.py
Normal file
@ -0,0 +1,44 @@
|
||||
# -*- coding: UTF-8 -*-
|
||||
import unittest
|
||||
from unittest.mock import MagicMock, patch
|
||||
import api
|
||||
|
||||
class TestBatchGetChunking(unittest.TestCase):
|
||||
@patch('api.request')
|
||||
def test_batch_get_records_chunking(self, mock_request):
|
||||
# Setup mock client
|
||||
client = api.Client("https://open.feishu.cn")
|
||||
access_token = "fake_token"
|
||||
app_token = "fake_app"
|
||||
table_id = "fake_table"
|
||||
|
||||
# Create 250 record IDs (should result in 3 chunks: 100, 100, 50)
|
||||
record_ids = [f"rec_{i}" for i in range(250)]
|
||||
|
||||
# Mock responses
|
||||
mock_request.side_effect = [
|
||||
{'code': 0, 'data': {'records': [{'record_id': f'rec_{i}'} for i in range(0, 100)]}},
|
||||
{'code': 0, 'data': {'records': [{'record_id': f'rec_{i}'} for i in range(100, 200)]}},
|
||||
{'code': 0, 'data': {'records': [{'record_id': f'rec_{i}'} for i in range(200, 250)]}},
|
||||
]
|
||||
|
||||
# Call the method
|
||||
results = client.batch_get_records(access_token, app_token, table_id, record_ids)
|
||||
|
||||
# Verify
|
||||
self.assertEqual(len(results), 250)
|
||||
self.assertEqual(mock_request.call_count, 3)
|
||||
|
||||
# Verify the chunks were passed correctly
|
||||
first_call_payload = mock_request.call_args_list[0][0][3] # payload is the 4th positional arg
|
||||
self.assertEqual(len(first_call_payload['record_ids']), 100)
|
||||
self.assertEqual(first_call_payload['record_ids'][0], "rec_0")
|
||||
self.assertEqual(first_call_payload['record_ids'][99], "rec_99")
|
||||
|
||||
last_call_payload = mock_request.call_args_list[2][0][3]
|
||||
self.assertEqual(len(last_call_payload['record_ids']), 50)
|
||||
self.assertEqual(last_call_payload['record_ids'][0], "rec_200")
|
||||
self.assertEqual(last_call_payload['record_ids'][49], "rec_249")
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user