code: def test_get_prediction_read_url(self, mocker: MockerFixture) -> None:
      client = ApiWorkflowClient(token="abc", dataset_id="dataset-id")
      mocker.patch.object(
          client._datasources_api,
          "get_prediction_file_read_url_from_datasource_by_dataset_id",
          return_value="read-url",
      )
      assert (
          client.get_prediction_read_url(filename="test.json")
          == "read-url"
      )
      client._datasources_api.get_prediction_file_read_url_from_datasource_by_dataset_id.assert_called_once_with(
          dataset_id="dataset-id", file_name="test.json"
      )
  
imports: import pytest
  import tqdm
  from pytest_mock import MockerFixture
  from lightly.api import ApiWorkflowClient, api_workflow_datasources
  from lightly.openapi_generated.swagger_client.models import DatasourceConfigAzure, DatasourceConfigGCS, DatasourceConfigLOCAL, DatasourceConfigS3, DatasourceConfigS3DelegatedAccess, DatasourcePurpose, DatasourceRawSamplesDataRow
  from lightly.openapi_generated.swagger_client.models.datasource_config_verify_data import DatasourceConfigVerifyData
  from lightly.openapi_generated.swagger_client.models.datasource_config_verify_data_errors import DatasourceConfigVerifyDataErrors
  from lightly.openapi_generated.swagger_client.models.datasource_processed_until_timestamp_response import DatasourceProcessedUntilTimestampResponse
  from lightly.openapi_generated.swagger_client.models.datasource_raw_samples_data import DatasourceRawSamplesData
label_desc: Use image node_id 17 for calling the TestDatasourcesMixin obj's underlying member method code with example usage: obj.test_get_prediction_read_url(mocker) without return types