code: def test_step_collection_properties(
      pipeline_session, sagemaker_session, source_dir
  ):
      # ModelStep
      model = Model(
          name="MyModel",
          image_uri=IMAGE_URI,
          model_data=ParameterString(
              name="ModelData", default_value="s3://my-bucket/file"
          ),
          sagemaker_session=pipeline_session,
          entry_point=f"{source_dir}/inference.py",
          source_dir=f"{source_dir}",
          role=ROLE,
      )
      step_args = model.create(
          instance_type="c4.4xlarge",
          accelerator_type="ml.eia1.medium",
      )
      model_step_name = "MyModelStep"
      model_step = ModelStep(
          name=model_step_name,
          step_args=step_args,
      )
      steps = model_step.steps
      assert len(steps) == 2
      assert isinstance(steps[1], CreateModelStep)
      assert model_step.properties.ModelName.expr == {
          "Get": f"Steps.{model_step_name}-{_CREATE_MODEL_NAME_BASE}.ModelName"
      }
  
      # RegisterModel
      model.sagemaker_session = sagemaker_session
      model.entry_point = None
      model.source_dir = None
      register_model_step_name = "RegisterModelStep"
      register_model = RegisterModel(
          name=register_model_step_name,
          model=model,
          model_data="s3://",
          content_types=["content_type"],
          response_types=["response_type"],
          inference_instances=["inference_instance"],
          transform_instances=["transform_instance"],
          model_package_group_name="mpg",
      )
      steps = register_model.steps
      assert len(steps) == 1
      assert register_model.properties.ModelPackageName.expr == {
          "Get": f"Steps.{register_model_step_name}-RegisterModel.ModelPackageName"
      }
  
      assert (
          register_model.properties.ModelPackageName._referenced_steps
          == [register_model.steps[-1]]
      )
  
      # Custom StepCollection
      step_collection = StepCollection(name="MyStepCollection")
      steps = step_collection.steps
      assert len(steps) == 0
      assert not step_collection.properties
  
imports: from __future__ import absolute_import
  import json
  import os
  import tempfile
  import shutil
  import pytest
  from sagemaker.drift_check_baselines import DriftCheckBaselines
  from sagemaker.workflow._utils import REPACK_SCRIPT_LAUNCHER
  from sagemaker.workflow.condition_step import ConditionStep
  from sagemaker.workflow.conditions import ConditionEquals
  from sagemaker.workflow.model_step import ModelStep, _CREATE_MODEL_NAME_BASE, _REPACK_MODEL_NAME_BASE
  from sagemaker.workflow.parameters import ParameterString
  from sagemaker.workflow.pipeline import Pipeline, PipelineGraph
  from sagemaker.workflow.utilities import list_to_request
  from tests.unit import DATA_DIR
  from sagemaker import PipelineModel
  from sagemaker.estimator import Estimator
  from sagemaker.model import Model, FrameworkModel
  from sagemaker.tensorflow import TensorFlow
  from sagemaker.inputs import CreateModelInput, TransformInput
  from sagemaker.model_metrics import MetricsSource, ModelMetrics
  from sagemaker.workflow.properties import Properties
  from sagemaker.workflow.steps import CreateModelStep
  from sagemaker.workflow.step_collections import EstimatorTransformer, StepCollection, RegisterModel
  from sagemaker.workflow.retry import StepRetryPolicy, StepExceptionTypeEnum
  from tests.unit.sagemaker.workflow.helpers import ordered, CustomStep
  from tests.unit.sagemaker.workflow.conftest import IMAGE_URI, ROLE, BUCKET, REGION
label_desc: Use image node_id 10 for calling a global function with example usage: test_step_collection_properties(pipeline_session, sagemaker_session, source_dir) without return types