code: def test_build_task_group_deco_context_manager():
      """
      Tests Following :
      1. Nested TaskGroup creation using taskgroup decorator should create same TaskGroup which can be
      created using TaskGroup context manager.
      2. TaskGroup consisting Tasks created using task decorator.
      3. Node Ids of dags created with taskgroup decorator.
      """
  
      from airflow.decorators import task
  
      # Creating Tasks
      @task
      def task_start():
          """Dummy Task which is First Task of Dag"""
          return "[Task_start]"
  
      @task
      def task_end():
          """Dummy Task which is Last Task of Dag"""
          print("[ Task_End ]")
  
      @task
      def task_1(value):
          """Dummy Task1"""
          return f"[ Task1 {value} ]"
  
      @task
      def task_2(value):
          """Dummy Task2"""
          print(f"[ Task2 {value} ]")
  
      @task
      def task_3(value):
          """Dummy Task3"""
          return f"[ Task3 {value} ]"
  
      @task
      def task_4(value):
          """Dummy Task3"""
          print(f"[ Task4 {value} ]")
  
      # Creating TaskGroups
      @task_group_decorator
      def section_1(value):
          """TaskGroup for grouping related Tasks"""
  
          @task_group_decorator()
          def section_2(value2):
              """TaskGroup for grouping related Tasks"""
              return task_4(task_3(value2))
  
          op1 = task_2(task_1(value))
          return section_2(op1)
  
      execution_date = pendulum.parse("20201109")
      with DAG(
          dag_id="example_nested_task_group_decorator",
          start_date=execution_date,
          tags=["example"],
      ) as dag:
          t_start = task_start()
          sec_1 = section_1(t_start)
          sec_1.set_downstream(task_end())
  
      # Testing TaskGroup created using taskgroup decorator
      assert set(dag.task_group.children.keys()) == {
          "task_start",
          "task_end",
          "section_1",
      }
      assert set(
          dag.task_group.children["section_1"].children.keys()
      ) == {
          "section_1.task_1",
          "section_1.task_2",
          "section_1.section_2",
      }
  
      # Testing TaskGroup consisting Tasks created using task decorator
      assert dag.task_dict["task_start"].downstream_task_ids == {
          "section_1.task_1"
      }
      assert dag.task_dict["section_1.task_2"].downstream_task_ids == {
          "section_1.section_2.task_3"
      }
      assert dag.task_dict[
          "section_1.section_2.task_4"
      ].downstream_task_ids == {"task_end"}
  
      # Node IDs test
      node_ids = {
          "id": None,
          "children": [
              {
                  "id": "section_1",
                  "children": [
                      {
                          "id": "section_1.section_2",
                          "children": [
                              {"id": "section_1.section_2.task_3"},
                              {"id": "section_1.section_2.task_4"},
                          ],
                      },
                      {"id": "section_1.task_1"},
                      {"id": "section_1.task_2"},
                  ],
              },
              {"id": "task_end"},
              {"id": "task_start"},
          ],
      }
  
      assert (
          extract_node_id(task_group_to_dict(dag.task_group))
          == node_ids
      )
  
imports: from __future__ import annotations
  from datetime import timedelta
  import pendulum
  import pytest
  from airflow.decorators import dag, setup, task, task_group, teardown
  from airflow.exceptions import TaskAlreadyInTaskGroup
  from airflow.models.baseoperator import BaseOperator
  from airflow.models.dag import DAG
  from airflow.models.xcom_arg import XComArg
  from airflow.operators.bash import BashOperator
  from airflow.operators.empty import EmptyOperator
  from airflow.operators.python import PythonOperator
  from airflow.utils.dag_edges import dag_edges
  from airflow.utils.task_group import TaskGroup, task_group_to_dict
  from tests.models import DEFAULT_DATE
label_desc: Use image node_id 13 for calling a global function with example usage: test_build_task_group_deco_context_manager() and returns: str, str, value, str, str, value, str, section_2, task_4