code: def test_properties(self) -> None:
      node = GenerationNode(
          node_name="test",
          model_specs=[
              ModelSpec(
                  model_enum=Models.GPEI,
                  model_kwargs={},
                  model_gen_kwargs={
                      "n": 1,
                      "fixed_features": ObservationFeatures(
                          parameters={},
                          trial_index=0,
                      ),
                  },
              ),
          ],
      )
      dat = self.branin_experiment.lookup_data()
      node.fit(
          experiment=self.branin_experiment,
          data=dat,
      )
      self.assertEqual(node.model_enum, node.model_specs[0].model_enum)
      self.assertEqual(
          node.model_kwargs, node.model_specs[0].model_kwargs
      )
      self.assertEqual(
          node.model_gen_kwargs, node.model_specs[0].model_gen_kwargs
      )
      self.assertEqual(
          node.model_cv_kwargs, node.model_specs[0].model_cv_kwargs
      )
      self.assertEqual(
          node.fixed_features, node.model_specs[0].fixed_features
      )
      self.assertEqual(node.cv_results, node.model_specs[0].cv_results)
      self.assertEqual(
          node.diagnostics, node.model_specs[0].diagnostics
      )
      self.assertEqual(node.node_name, "test")
      self.assertEqual(node.gen_unlimited_trials, True)
      self.assertEqual(node._unique_id, "test")
  
imports: import logging
  from logging import Logger
  from unittest.mock import patch, PropertyMock
  from ax.core.base_trial import TrialStatus
  from ax.core.observation import ObservationFeatures
  from ax.exceptions.core import UserInputError
  from ax.modelbridge.cross_validation import DiagnosticCriterion, MetricAggregation, SingleDiagnosticBestModelSelector
  from ax.modelbridge.factory import get_sobol
  from ax.modelbridge.generation_node import GenerationNode, GenerationStep
  from ax.modelbridge.model_spec import FactoryFunctionModelSpec, ModelSpec
  from ax.modelbridge.registry import Models
  from ax.modelbridge.transition_criterion import MaxTrials
  from ax.utils.common.logger import get_logger
  from ax.utils.common.testutils import TestCase
  from ax.utils.testing.core_stubs import get_branin_experiment
  from ax.utils.testing.mock import fast_botorch_optimize
label_desc: Use image node_id 6 for calling the TestGenerationNode obj's underlying member method code with example usage: obj.test_properties() without return types