diff --git a/dataconnect/service/mappers.py b/dataconnect/service/mappers.py index f65e747..cd819ec 100644 --- a/dataconnect/service/mappers.py +++ b/dataconnect/service/mappers.py @@ -64,7 +64,7 @@ def resource_to_fetched_data(table: DataTable) -> pd.DataFrame: ipc_buffer = pa.BufferReader(table.ipc_bytes) with pa.ipc.open_stream(ipc_buffer) as reader: - return reader.read_all().to_pandas() + return reader.read_all().to_pandas(types_mapper=pd.ArrowDtype) def resource_to_dataset(resource: ResourceInfo) -> Dataset: diff --git a/tests/test_get_datasets_paginated.py b/tests/test_get_datasets_paginated.py index 235140e..f16d9cf 100644 --- a/tests/test_get_datasets_paginated.py +++ b/tests/test_get_datasets_paginated.py @@ -7,7 +7,6 @@ import pytest -from dataconnect.exceptions import ValidationError from dataconnect.models import Dataset, PaginatedResponse, Pagination from dataconnect.service.default import DefaultDataConnectService from dataconnect.transport.errors import TransportError @@ -144,50 +143,6 @@ def test_builds_correct_request_body(self) -> None: "page_size": 10, } - def test_raises_validation_error_for_invalid_uuid(self) -> None: - transport = _FakeTransport(resources=[]) - service = DefaultDataConnectService(transport) - - with pytest.raises(ValidationError, match="study_environment_uuid must be a valid UUID"): - service.get_datasets(study_environment_uuid="not-a-uuid") # type: ignore[arg-type] - - def test_raises_validation_error_for_zero_uuid(self) -> None: - transport = _FakeTransport(resources=[]) - service = DefaultDataConnectService(transport) - - with pytest.raises(ValidationError, match="study_environment_uuid must not be empty"): - service.get_datasets(study_environment_uuid=UUID(int=0)) - - @pytest.mark.parametrize("page", [0, -1, -100]) - def test_raises_validation_error_for_invalid_page(self, page: int) -> None: - transport = _FakeTransport(resources=[]) - service = DefaultDataConnectService(transport) - - with pytest.raises(ValidationError, match="page must be a positive integer"): - service.get_datasets(study_environment_uuid=_STUDY_ENV_UUID, page=page) - - def test_raises_validation_error_for_non_int_page(self) -> None: - transport = _FakeTransport(resources=[]) - service = DefaultDataConnectService(transport) - - with pytest.raises(ValidationError, match="page must be a positive integer"): - service.get_datasets(study_environment_uuid=_STUDY_ENV_UUID, page="2") # type: ignore[arg-type] - - @pytest.mark.parametrize("page_size", [0, -1, -50]) - def test_raises_validation_error_for_invalid_page_size(self, page_size: int) -> None: - transport = _FakeTransport(resources=[]) - service = DefaultDataConnectService(transport) - - with pytest.raises(ValidationError, match="page_size must be a positive integer"): - service.get_datasets(study_environment_uuid=_STUDY_ENV_UUID, page_size=page_size) - - def test_raises_validation_error_for_non_int_page_size(self) -> None: - transport = _FakeTransport(resources=[]) - service = DefaultDataConnectService(transport) - - with pytest.raises(ValidationError, match="page_size must be a positive integer"): - service.get_datasets(study_environment_uuid=_STUDY_ENV_UUID, page_size="25") # type: ignore[arg-type] - def test_translates_transport_errors(self) -> None: transport = _FakeTransport(error=TransportError(error_code="CONN", message="cannot connect")) service = DefaultDataConnectService(transport)