Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ def __init__(self) -> None:

"""
self.max_requests_per_batch = BatchRequestContent.MAX_REQUESTS
self.batches: list[BatchRequestContent] = []
self.current_batch: BatchRequestContent = BatchRequestContent()
self.batches: list[BatchRequestContent] = [self.current_batch]

def add_batch_request_item(self, request: BatchRequestItem) -> None:
"""
Expand All @@ -26,10 +26,10 @@ def add_batch_request_item(self, request: BatchRequestItem) -> None:
request (BatchRequestItem): The request item to add.
"""
if len(self.current_batch.requests) >= self.max_requests_per_batch:
self.batches.append(self.current_batch.finalize())
self.current_batch.finalize()
self.current_batch = BatchRequestContent()
self.batches.append(self.current_batch)
self.current_batch.add_request(request.id, request)
self.batches.append(self.current_batch)

def remove_batch_request_item(self, request_id: str) -> None:
"""
Expand Down
44 changes: 44 additions & 0 deletions tests/requests/test_batch_request_content_collection.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import pytest
from io import BytesIO
from kiota_abstractions.request_information import RequestInformation
from msgraph_core.requests.batch_request_item import BatchRequestItem
from msgraph_core.requests.batch_request_content_collection import BatchRequestContentCollection
from kiota_abstractions.headers_collection import HeadersCollection as RequestHeaders


@pytest.fixture
def batch_request_content_collection():
return BatchRequestContentCollection()


@pytest.fixture
def request_info():
request_info = RequestInformation()
request_info.http_method = "GET"
request_info.url = "https://graph.microsoft.com/v1.0/me"
request_info.headers = RequestHeaders()
request_info.headers.add("Content-Type", "application/json")
request_info.content = BytesIO(b'{"key": "value"}')
return request_info


@pytest.fixture
def batch_request_item1(request_info):
return BatchRequestItem(request_information=request_info, id="1")


@pytest.fixture
def batch_request_item2(request_info):
return BatchRequestItem(request_information=request_info, id="2")


def test_init_batches(batch_request_content_collection):
assert len(batch_request_content_collection.batches) == 1
assert batch_request_content_collection.current_batch is not None


def test_add_batch_request_item(batch_request_content_collection, batch_request_item1, batch_request_item2):
batch_request_content_collection.add_batch_request_item(batch_request_item1)
batch_request_content_collection.add_batch_request_item(batch_request_item2)
assert len(batch_request_content_collection.batches) == 1
assert len(batch_request_content_collection.current_batch.requests) == 2