### Body

Currently `start_date` is mandatory parameter.
For DAGs with `schedule=None` we can relax this requirement as no scheduling calculation needed so the `start_date` parameter isn't used.

### Committer

- [X] I acknowledge that I am a maintainer/committer of the Apache Airflow project.
...
        dag = noop_pipeline()
        assert isinstance(dag, DAG)
        assert dag.dag_id == "noop_pipeline"
        assert dag.fileloc == __file__
    def test_set_dag_id(self):
        """Test that checks you can set dag_id from decorator."""
        @dag_decorator("test", default_args=self.DEFAULT_ARGS)
        def noop_pipeline():
            ...
        dag = noop_pipeline()
        assert isinstance(dag, DAG)
        assert dag.dag_id == "test"
    def test_default_dag_id(self):
        """Test that @dag uses function name as default dag id."""
        @dag_decorator(default_args=self.DEFAULT_ARGS)
        def noop_pipeline():
            ...
        dag = noop_pipeline()
        assert isinstance(dag, DAG)
        assert dag.dag_id == "noop_pipeline"
    @pytest.mark.parametrize(
        argnames=["dag_doc_md", "expected_doc_md"],
        argvalues=[
            pytest.param("dag docs.", "dag docs.", id="use_dag_doc_md"),
            pytest.param(None, "Regular DAG documentation", id="use_dag_docstring"),
        ],
    )
    def test_documentation_added(self, dag_doc_md, expected_doc_md):