code: def test_transform_on_new_data(self):
      # training data
      d = {
          "col1": [1, 1, np.nan, 3],
          "col2": ["a", "a", np.nan, "a"],
          "col3": [1, 1, 1, 3],
          "col4": ["a", "a", "b", "c"],
          "y": [0, 1, 1, 1],
      }
      df = pd.DataFrame(data=d)
      X_train = df.loc[:, ["col1", "col2", "col3", "col4"]]
      y_train = df.loc[:, "y"]
  
      d_test = {
          "col1": [1, 1, np.nan, 3],
          "col2": ["a", "a", np.nan, "a"],
          "col3": [1, 1, 1, 3],
          "col4": ["a", "a", "b", "c"],
          "y": [np.nan, 1, np.nan, 1],
      }
      df_test = pd.DataFrame(data=d_test)
      X_test = df_test.loc[:, ["col1", "col2", "col3", "col4"]]
      y_test = df_test.loc[:, "y"]
  
      pm = PreprocessingMissingValues(
          X_train.columns, PreprocessingMissingValues.FILL_NA_MEDIAN
      )
      pm.fit(X_train)
      X_train = pm.transform(X_train)
      X_test = pm.transform(X_test)
  
      self.assertEqual(1, X_test.loc[2, "col1"])
      self.assertEqual("a", X_test.loc[2, "col2"])
  
file_path: mljar-supervised/tests/tests_preprocessing/test_preprocessing_missing.py
imports: import unittest
  import tempfile
  import numpy
  import pandas
  from supervised.preprocessing.preprocessing_utils import PreprocessingUtils
  from supervised.preprocessing.preprocessing_missing import PreprocessingMissingValues
label_desc: Use image node_id 5 for calling the PreprocessingMissingValuesTest obj's underlying member method code with example usage: obj.test_transform_on_new_data() without return types