@@ -99,7 +99,22 @@ def test_should_pass_argument_to_hook(self, mock_hook):
99
99
)
100
100
mock_hook .return_value .exists .assert_called_once_with (TEST_BUCKET , TEST_OBJECT , DEFAULT_RETRY )
101
101
102
- def test_gcs_object_existence_sensor_deferred (self ):
102
+ @mock .patch ("airflow.providers.google.cloud.sensors.gcs.GCSHook" )
103
+ @mock .patch ("airflow.providers.google.cloud.sensors.gcs.GCSObjectExistenceSensor.defer" )
104
+ def test_gcs_object_existence_sensor_finish_before_deferred (self , mock_defer , mock_hook ):
105
+ task = GCSObjectExistenceSensor (
106
+ task_id = "task-id" ,
107
+ bucket = TEST_BUCKET ,
108
+ object = TEST_OBJECT ,
109
+ google_cloud_conn_id = TEST_GCP_CONN_ID ,
110
+ deferrable = True ,
111
+ )
112
+ mock_hook .return_value .exists .return_value = True
113
+ task .execute (mock .MagicMock ())
114
+ assert not mock_defer .called
115
+
116
+ @mock .patch ("airflow.providers.google.cloud.sensors.gcs.GCSHook" )
117
+ def test_gcs_object_existence_sensor_deferred (self , mock_hook ):
103
118
"""
104
119
Asserts that a task is deferred and a GCSBlobTrigger will be fired
105
120
when the GCSObjectExistenceSensor is executed and deferrable is set to True.
@@ -111,6 +126,7 @@ def test_gcs_object_existence_sensor_deferred(self):
111
126
google_cloud_conn_id = TEST_GCP_CONN_ID ,
112
127
deferrable = True ,
113
128
)
129
+ mock_hook .return_value .exists .return_value = False
114
130
with pytest .raises (TaskDeferred ) as exc :
115
131
task .execute (context )
116
132
assert isinstance (exc .value .trigger , GCSBlobTrigger ), "Trigger is not a GCSBlobTrigger"
@@ -147,7 +163,8 @@ class TestGoogleCloudStorageObjectSensorAsync:
147
163
"Please use `GCSObjectExistenceSensor` and set `deferrable` attribute to `True` instead"
148
164
)
149
165
150
- def test_gcs_object_existence_sensor_async (self ):
166
+ @mock .patch ("airflow.providers.google.cloud.sensors.gcs.GCSHook" )
167
+ def test_gcs_object_existence_sensor_async (self , mock_hook ):
151
168
"""
152
169
Asserts that a task is deferred and a GCSBlobTrigger will be fired
153
170
when the GCSObjectExistenceAsyncSensor is executed.
@@ -159,6 +176,7 @@ def test_gcs_object_existence_sensor_async(self):
159
176
object = TEST_OBJECT ,
160
177
google_cloud_conn_id = TEST_GCP_CONN_ID ,
161
178
)
179
+ mock_hook .return_value .exists .return_value = False
162
180
with pytest .raises (TaskDeferred ) as exc :
163
181
task .execute (context )
164
182
assert isinstance (exc .value .trigger , GCSBlobTrigger ), "Trigger is not a GCSBlobTrigger"
0 commit comments