@@ -318,13 +318,64 @@ def test_download_dataset_twingraph(self, mock_download_twingraph, mock_get_api_
318318 assert result ["folder_path" ] == str (mock_folder_path )
319319 assert result ["dataset_id" ] == dataset_id
320320
321+ @patch ("cosmotech.coal.cosmotech_api.runner.datasets.get_api_client" )
322+ @pytest .mark .skipif (
323+ semver_of ('cosmotech_api' ).major < 5 , reason = 'supported only in version 5'
324+ )
325+ def test_download_dataset_v5 (self , mock_get_api_client ):
326+ """Test the download_dataset function with twin graph dataset."""
327+ # Arrange
328+ organization_id = "org-123"
329+ workspace_id = "ws-123"
330+ dataset_id = "dataset-123"
331+ dataset_part_id = "part-123"
332+
333+ # Mock API client
334+ mock_api_client = MagicMock ()
335+ mock_api_client .__enter__ .return_value = mock_api_client
336+ mock_get_api_client .return_value = (mock_api_client , "API Key" )
337+
338+ # Mock dataset API
339+ mock_dataset_api = MagicMock (spec = DatasetApi )
340+ mock_dataset_part = MagicMock ()
341+ mock_dataset_part .id = dataset_part_id
342+ mock_dataset_part .source_name = "test-dataset-part.txt"
343+ mock_dataset = MagicMock ()
344+ mock_dataset .id = dataset_id
345+ mock_dataset .name = "test-dataset"
346+ mock_dataset .parts = [mock_dataset_part ]
347+ mock_dataset_api .get_dataset .return_value = mock_dataset
348+
349+ # Mock file part download
350+ mock_content = b'test file part content in byte format'
351+ mock_dataset_api .download_dataset_part .return_value = mock_content
352+
353+ with patch ("cosmotech.coal.cosmotech_api.runner.datasets.DatasetApi" , return_value = mock_dataset_api ):
354+ # Act
355+ result = download_dataset (
356+ organization_id = organization_id ,
357+ workspace_id = workspace_id ,
358+ dataset_id = dataset_id ,
359+ )
360+
361+ # Assert
362+ mock_dataset_api .get_dataset .assert_called_once_with (
363+ organization_id = organization_id , workspace_id = workspace_id , dataset_id = dataset_id
364+ )
365+ mock_dataset_api .download_dataset_part .assert_called_once_with (
366+ organization_id ,
367+ workspace_id ,
368+ dataset_id ,
369+ dataset_part_id )
370+ assert result ["type" ] == "csm_dataset"
371+ assert result ["content" ] == {'test-dataset-part.txt' : 'test file part content in byte format' }
372+ assert result ["name" ] == "test-dataset"
373+ assert result ["dataset_id" ] == "dataset-123"
374+
321375 @patch ("cosmotech.coal.cosmotech_api.runner.datasets.download_dataset" )
322376 @patch ("multiprocessing.Process" )
323377 @patch ("multiprocessing.Manager" )
324378 @patch ("cosmotech.coal.cosmotech_api.runner.datasets.get_api_client" )
325- @pytest .mark .skipif (
326- semver_of ('cosmotech_api' ).major >= 5 , reason = 'not supported in version 5'
327- )
328379 def test_download_datasets_parallel (self , mock_get_api_client , mock_manager , mock_process , mock_download_dataset ):
329380 """Test the download_datasets_parallel function."""
330381 # Arrange
0 commit comments