### 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.
"""
        Asserts that a task is deferred and a GCSBlobTrigger will be fired
        when the GCSObjectUpdateAsyncSensor is executed.
        """
        mock_hook.return_value.is_updated_after.return_value = False
        with pytest.raises(TaskDeferred) as exc:
            self.OPERATOR.execute(mock.MagicMock())
        assert isinstance(
            exc.value.trigger, GCSCheckBlobUpdateTimeTrigger
        ), "Trigger is not a GCSCheckBlobUpdateTimeTrigger"
    @pytest.mark.parametrize(
        "soft_fail, expected_exception", ((False, AirflowException), (True, AirflowSkipException))
    )
    def test_gcs_object_update_async_sensor_execute_failure(self, context, soft_fail, expected_exception):
        """Tests that an AirflowException is raised in case of error event"""
        self.OPERATOR.soft_fail = soft_fail
        with pytest.raises(expected_exception):
            self.OPERATOR.execute_complete(
                context=context, event={"status": "error", "message": "test failure message"}
            )
    def test_gcs_object_update_async_sensor_execute_complete(self, context):
        """Asserts that logging occurs as expected"""
        with mock.patch.object(self.OPERATOR.log, "info") as mock_log_info:
            self.OPERATOR.execute_complete(
                context=context, event={"status": "success", "message": "Job completed"}
            )
        mock_log_info.assert_called_with(
            "Checking last updated time for object %s in bucket : %s", TEST_OBJECT, TEST_BUCKET
        )
class TestGoogleCloudStoragePrefixSensor: