code: def test_next_run_dataset_summary(self, dag_maker, admin_client):
      with dag_maker(
          dag_id="upstream",
          schedule=[Dataset(uri="s3://bucket/key/1")],
          serialized=True,
      ):
          EmptyOperator(task_id="task1")
  
      response = admin_client.post(
          "/next_run_datasets_summary", data={"dag_ids": ["upstream"]}
      )
  
      assert response.status_code == 200
      assert response.json == {
          "upstream": {
              "ready": 0,
              "total": 1,
              "uri": "s3://bucket/key/1",
          }
      }
  
imports: from __future__ import annotations
  import pendulum
  import pytest
  from dateutil.tz import UTC
  from airflow.datasets import Dataset
  from airflow.models.dataset import DatasetEvent, DatasetModel
  from airflow.operators.empty import EmptyOperator
  from tests.test_utils.asserts import assert_queries_count
  from tests.test_utils.db import clear_db_datasets
label_desc: Use image node_id 1 for calling the TestGetDatasetNextRunSummary obj's underlying member method code with example usage: obj.test_next_run_dataset_summary(dag_maker, admin_client) without return types