3939 GCSCheckBlobUpdateTimeTrigger ,
4040 GCSPrefixBlobTrigger ,
4141)
42- from tests .providers .google .cloud .utils .airflow_util import create_context
4342
4443TEST_BUCKET = "TEST_BUCKET"
4544
@@ -247,6 +246,21 @@ def test_should_pass_argument_to_hook(self, mock_hook):
247246 mock_hook .return_value .is_updated_after .assert_called_once_with (TEST_BUCKET , TEST_OBJECT , mock .ANY )
248247 assert result is True
249248
249+ @mock .patch ("airflow.providers.google.cloud.sensors.gcs.GCSHook" )
250+ @mock .patch ("airflow.providers.google.cloud.sensors.gcs.GCSObjectUpdateSensor.defer" )
251+ def test_gcs_object_update_sensor_finish_before_deferred (self , mock_defer , mock_hook ):
252+ task = GCSObjectUpdateSensor (
253+ task_id = "task-id" ,
254+ bucket = TEST_BUCKET ,
255+ object = TEST_OBJECT ,
256+ google_cloud_conn_id = TEST_GCP_CONN_ID ,
257+ impersonation_chain = TEST_IMPERSONATION_CHAIN ,
258+ deferrable = True ,
259+ )
260+ mock_hook .return_value .is_updated_after .return_value = True
261+ task .execute (mock .MagicMock ())
262+ assert not mock_defer .called
263+
250264
251265class TestGCSObjectUpdateSensorAsync :
252266 OPERATOR = GCSObjectUpdateSensor (
@@ -257,14 +271,15 @@ class TestGCSObjectUpdateSensorAsync:
257271 deferrable = True ,
258272 )
259273
260- def test_gcs_object_update_sensor_async (self , context ):
274+ @mock .patch ("airflow.providers.google.cloud.sensors.gcs.GCSHook" )
275+ def test_gcs_object_update_sensor_async (self , mock_hook ):
261276 """
262277 Asserts that a task is deferred and a GCSBlobTrigger will be fired
263278 when the GCSObjectUpdateSensorAsync is executed.
264279 """
265-
280+ mock_hook . return_value . is_updated_after . return_value = False
266281 with pytest .raises (TaskDeferred ) as exc :
267- self .OPERATOR .execute (create_context ( self . OPERATOR ))
282+ self .OPERATOR .execute (mock . MagicMock ( ))
268283 assert isinstance (
269284 exc .value .trigger , GCSCheckBlobUpdateTimeTrigger
270285 ), "Trigger is not a GCSCheckBlobUpdateTimeTrigger"
0 commit comments