code: def test_fit_transform(self):
      sample_num = 8
      past_seq_len = 2
      dates = pd.date_range("1/1/2019", periods=sample_num)
      data = np.random.randn(sample_num, 3)
      df = pd.DataFrame(
          {
              "datetime": dates,
              "values": data[:, 0],
              "A": data[:, 1],
              "B": data[:, 2],
          }
      )
      config = {
          "selected_features": json.dumps(
              [
                  "IS_AWAKE(datetime)",
                  "IS_BUSY_HOURS(datetime)",
                  "HOUR(datetime)",
                  "A",
              ]
          ),
          "past_seq_len": past_seq_len,
      }
      feat = TimeSequenceFeatureTransformer(
          future_seq_len=1,
          dt_col="datetime",
          target_col="values",
          drop_missing=True,
      )
      x, y = feat.fit_transform(df, **config)
      assert x.shape == (
          sample_num - past_seq_len,
          past_seq_len,
          len(json.loads(config["selected_features"])) + 1,
      )
      assert y.shape == (sample_num - past_seq_len, 1)
      assert (
          np.mean(np.concatenate((x[0, :, 0], y[:, 0]), axis=None))
          < 1e-5
      )
  
imports: import pytest
  from test.zoo.pipeline.utils.test_utils import ZooTestCase
  from zoo.chronos.autots.deprecated.feature.utils import save, restore
  from zoo.chronos.autots.deprecated.feature.time_sequence import *
  from numpy.testing import assert_array_almost_equal
  import json
  import tempfile
  import shutil
  from zoo.chronos.autots.deprecated.preprocessing.utils import train_val_test_split
label_desc: Use image node_id 4 for calling the TestTimeSequenceFeature obj's underlying member method code with example usage: obj.test_fit_transform() without return types