code: def test_simple_join_to_time_spine(  # noqa: D
      request: FixtureRequest,
      mf_test_session_state: MetricFlowTestSessionState,
      sql_client: SqlClient,
      it_helpers: IntegrationTestHelpers,
  ) -> None:
      query_result = it_helpers.mf_engine.query(
          MetricFlowQueryRequest.create_with_random_request_id(
              metric_names=["bookings_join_to_time_spine"],
              group_by_names=["metric_time"],
              time_constraint_start=datetime.datetime(2019, 11, 27),
              time_constraint_end=datetime.datetime(2020, 1, 5),
              order_by_names=["metric_time"],
          )
      )
      assert (
          query_result.result_df is not None
      ), "Unexpected empty result."
  
      assert_object_snapshot_equal(
          request=request,
          mf_test_session_state=mf_test_session_state,
          obj_id="query_output",
          obj=query_result.result_df.to_string(),
          sql_client=sql_client,
      )
  
file_path: metricflow/metricflow/test/integration/query_output/test_fill_nulls_with_0.py
imports: from __future__ import annotations
  import datetime
  import pytest
  from _pytest.fixtures import FixtureRequest
  from metricflow.engine.metricflow_engine import MetricFlowQueryRequest
  from metricflow.protocols.sql_client import SqlClient
  from metricflow.test.fixtures.setup_fixtures import MetricFlowTestSessionState
  from metricflow.test.integration.conftest import IntegrationTestHelpers
  from metricflow.test.snapshot_utils import assert_object_snapshot_equal
label_desc: Use image node_id 3 for calling a global function with example usage: test_simple_join_to_time_spine(request, mf_test_session_state, sql_client, it_helpers) without return types