code: def test_bind_create_function_should_raise_forecast_missing_required_columns(
      self,
  ):
      with patch.object(StatementBinder, "bind"):
          create_function_statement = MagicMock()
          create_function_statement.function_type = "forecasting"
          id_col_obj = ColumnCatalogEntry(
              name="type",
              type=MagicMock(),
              array_type=MagicMock(),
              array_dimensions=MagicMock(),
          )
          ds_col_obj = ColumnCatalogEntry(
              name="saledate",
              type=MagicMock(),
              array_type=MagicMock(),
              array_dimensions=MagicMock(),
          )
          create_function_statement.query.target_list = [
              TupleValueExpression(
                  name=id_col_obj.name,
                  table_alias="a",
                  col_object=id_col_obj,
              ),
              TupleValueExpression(
                  name=ds_col_obj.name,
                  table_alias="a",
                  col_object=ds_col_obj,
              ),
          ]
          create_function_statement.metadata = [
              ("id", "type"),
              ("time", "saledate"),
              ("predict", "ma"),
          ]
          binder = StatementBinder(StatementBinderContext(MagicMock()))
  
          with self.assertRaises(AssertionError) as cm:
              binder._bind_create_function_statement(
                  create_function_statement
              )
  
          err_msg = "Missing required {'ma'} columns for forecasting function."
          self.assertEqual(str(cm.exception), err_msg)
  
imports: import unittest
  from unittest.mock import MagicMock, Mock, patch
  from evadb.binder.binder_utils import BinderError
  from evadb.binder.statement_binder import StatementBinder
  from evadb.binder.statement_binder_context import StatementBinderContext
  from evadb.catalog.catalog_type import ColumnType, NdArrayType
  from evadb.catalog.models.utils import ColumnCatalogEntry
  from evadb.catalog.sql_config import IDENTIFIER_COLUMN
  from evadb.expression.function_expression import FunctionExpression
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.parser.alias import Alias
  from evadb.parser.create_statement import ColumnDefinition
label_desc: Use image node_id 21 for calling the StatementBinderTests obj's underlying member method code with example usage: obj.test_bind_create_function_should_raise_forecast_missing_required_columns() without return types