code: def test_files_deleted_between_pokes_throw_error(
      self, soft_fail, expected_exception
  ):
      self.sensor.soft_fail = soft_fail
      self.sensor.is_bucket_updated({"a", "b"})
      with pytest.raises(expected_exception):
          self.sensor.is_bucket_updated({"a"})
  
imports: from __future__ import annotations
  from datetime import datetime, timedelta, timezone
  from unittest import mock
  import pendulum
  import pytest
  from google.cloud.storage.retry import DEFAULT_RETRY
  from airflow.exceptions import AirflowProviderDeprecationWarning, AirflowSensorTimeout, AirflowSkipException, TaskDeferred
  from airflow.models.dag import DAG, AirflowException
  from airflow.providers.google.cloud.sensors.gcs import GCSObjectExistenceAsyncSensor, GCSObjectExistenceSensor, GCSObjectsWithPrefixExistenceSensor, GCSObjectUpdateSensor, GCSUploadSessionCompleteSensor, ts_function
  from airflow.providers.google.cloud.triggers.gcs import GCSBlobTrigger, GCSCheckBlobUpdateTimeTrigger, GCSPrefixBlobTrigger, GCSUploadSessionTrigger
label_desc: Use image node_id 3 for calling the TestGCSUploadSessionCompleteSensor obj's underlying member method code with example usage: obj.test_files_deleted_between_pokes_throw_error(soft_fail, expected_exception) without return types