code: def test_run_template_hourly_single(df_hourly):
      """Tests running model template with hourly data."""
      forecaster = Forecaster()
      metadata_param = MetadataParam(
          time_col="ts", value_col="y", freq="H"
      )
      model_components = ModelComponentsParam(
          custom=dict(lag_unit=LagUnitEnum.week.name, lags=[1, 2, 3])
      )
      evaluation = EvaluationPeriodParam(
          cv_max_splits=1, test_horizon=1
      )
      forecast_config = ForecastConfig(
          forecast_horizon=24,
          model_template=ModelTemplateEnum.LAG_BASED.name,
          metadata_param=metadata_param,
          model_components_param=model_components,
          evaluation_period_param=evaluation,
      )
      result = forecaster.run_forecast_config(
          df=df_hourly, config=forecast_config
      )
      # Checks forecast values are correct.
      assert (
          result.forecast.df_test[PREDICTED_COL]
          .iloc[-24:]
          .reset_index(drop=True)
          .astype(float)
          .equals(
              df_hourly["y"]
              .iloc[-(24 * 7 * 2) : -(24 * 7 * 2 - 24)]
              .reset_index(drop=True)
              .astype(float)
          )
      )
  
imports: import pandas
  import pytest
  from testfixtures import LogCapture
  from greykite.common.aggregation_function_enum import AggregationFunctionEnum
  from greykite.common.constants import LOGGER_NAME
  from greykite.common.constants import PREDICTED_COL
  from greykite.framework.templates.autogen.forecast_config import EvaluationPeriodParam
  from greykite.framework.templates.autogen.forecast_config import ForecastConfig
  from greykite.framework.templates.autogen.forecast_config import MetadataParam
  from greykite.framework.templates.autogen.forecast_config import ModelComponentsParam
  from greykite.framework.templates.forecaster import Forecaster
  from greykite.framework.templates.lag_based_template import LagBasedTemplate
  from greykite.framework.templates.model_templates import ModelTemplateEnum
  from greykite.framework.utils.result_summary import summarize_grid_search_results
  from greykite.sklearn.estimator.lag_based_estimator import LagBasedEstimator
  from greykite.sklearn.estimator.lag_based_estimator import LagUnitEnum
label_desc: Use image node_id 10 for calling a global function with example usage: test_run_template_hourly_single(df_hourly) without return types