code: def test_submit(self, mock_batch_service_client, cloud_batch_hook):
      job = Job()
      job_name = "jobname"
      project_id = "test_project_id"
      region = "us-central1"
  
      cloud_batch_hook.submit_batch_job(
          job_name=job_name,
          job=Job.to_dict(job),
          region=region,
          project_id=project_id,
      )
  
      create_request = CreateJobRequest()
      create_request.job = job
      create_request.job_id = job_name
      create_request.parent = (
          f"projects/{project_id}/locations/{region}"
      )
  
      cloud_batch_hook._client.create_job.assert_called_with(
          create_request
      )
  
imports: from __future__ import annotations
  from unittest import mock
  import pytest
  from google.cloud.batch import ListJobsRequest
  from google.cloud.batch_v1 import CreateJobRequest, Job, JobStatus
  from airflow.exceptions import AirflowException
  from airflow.providers.google.cloud.hooks.cloud_batch import CloudBatchAsyncHook, CloudBatchHook
  from tests.providers.google.cloud.utils.base_gcp_mock import mock_base_gcp_hook_default_project_id
label_desc: Use image node_id 3 for calling the TestCloudBathHook obj's underlying member method code with example usage: obj.test_submit(mock_batch_service_client, cloud_batch_hook) without return types