code: def test_create_metadata_properties(
      column_name,
      expected_prop_type,
      expected_title,
      expected_visible,
      expected_type,
      expected_values,
      td_extractor: TextDescriptivesExtractor,
  ) -> None:
      df = pd.DataFrame(
          {
              "col_int": pd.Series([1, 2, 3], dtype="int32"),
              "col_bool": pd.Series([True, False, True], dtype="bool"),
              "col_float": pd.Series(
                  [1.234, 2.345, 3.456], dtype="float64"
              ),
              "col_obj": pd.Series(
                  ["value_1", "value_2", "value_3"], dtype="object"
              ),
          }
      )
      properties = td_extractor._create_metadata_properties(df)
      prop = next(
          (prop for prop in properties if prop.name == column_name),
          None,
      )
      assert isinstance(prop, expected_prop_type)
      assert prop.name == column_name
      assert prop.title == expected_title
      assert prop.visible_for_annotators == expected_visible
      assert prop.type == expected_type
      if isinstance(prop, TermsMetadataProperty):
          assert prop.values == expected_values
  
imports: from unittest.mock import MagicMock
  import pandas
  import pytest
  from argilla.client.feedback.dataset import FeedbackDataset
  from argilla.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor
  from argilla.client.feedback.schemas.fields import TextField
  from argilla.client.feedback.schemas.metadata import FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty
  from argilla.client.feedback.schemas.questions import TextQuestion
  from argilla.client.feedback.schemas.records import FeedbackRecord
label_desc: Use image node_id 8 for calling a global function with example usage: test_create_metadata_properties(column_name, expected_prop_type, expected_title, expected_visible, expected_type, expected_values, td_extractor) without return types