diff --git a/dataconnect/service/default.py b/dataconnect/service/default.py index 61d41fd..e8f773f 100644 --- a/dataconnect/service/default.py +++ b/dataconnect/service/default.py @@ -74,7 +74,13 @@ def get_dataset_versions(self, dataset_uuid: UUID) -> list[DatasetVersion]: try: resources = self._transport.list_resources(request) - return [resource_to_dataset_version(r) for r in resources] + + # Return Sorted dataset versions in descending order (newest first) based on the dataset_version field. + return sorted( + (resource_to_dataset_version(r) for r in resources), + key=lambda dv: dv.dataset_version, + reverse=True, + ) except Exception as ex: raise translate_error(ex) from ex diff --git a/tests/test_service_default.py b/tests/test_service_default.py index b4910d7..ad91b99 100644 --- a/tests/test_service_default.py +++ b/tests/test_service_default.py @@ -75,3 +75,14 @@ # assert len(studies) == 1 # assert transport.last_request is not None # assert transport.last_request.body == "" + +# def test_get_dataset_versions_sorted(monkeypatch): +# service = DefaultDataConnectService(transport=DummyTransport()) +# # Patch the mapping function to our dummy +# monkeypatch.setattr( +# "dataconnect.service.default.resource_to_dataset_version", +# dummy_resource_to_dataset_version, +# ) +# result = service.get_dataset_versions(UUID("073410b6-79be-3e7d-ae37-92f6e054013e")) +# versions = [dv.dataset_version for dv in result] +# assert versions == sorted(versions, reverse=True)