@@ -64,7 +64,24 @@ def test_passing_arguments_to_hook(self, mock_hook):
64
64
project_id = TEST_PROJECT_ID , dataset_id = TEST_DATASET_ID , table_id = TEST_TABLE_ID
65
65
)
66
66
67
- def test_execute_defered (self ):
67
+ @mock .patch ("airflow.providers.google.cloud.sensors.bigquery.BigQueryHook" )
68
+ @mock .patch ("airflow.providers.google.cloud.sensors.bigquery.BigQueryTableExistenceSensor.defer" )
69
+ def test_table_existence_sensor_finish_before_deferred (self , mock_defer , mock_hook ):
70
+ task = BigQueryTableExistenceSensor (
71
+ task_id = "task-id" ,
72
+ project_id = TEST_PROJECT_ID ,
73
+ dataset_id = TEST_DATASET_ID ,
74
+ table_id = TEST_TABLE_ID ,
75
+ gcp_conn_id = TEST_GCP_CONN_ID ,
76
+ impersonation_chain = TEST_IMPERSONATION_CHAIN ,
77
+ deferrable = True ,
78
+ )
79
+ mock_hook .return_value .table_exists .return_value = True
80
+ task .execute (mock .MagicMock ())
81
+ assert not mock_defer .called
82
+
83
+ @mock .patch ("airflow.providers.google.cloud.sensors.bigquery.BigQueryHook" )
84
+ def test_execute_deferred (self , mock_hook ):
68
85
"""
69
86
Asserts that a task is deferred and a BigQueryTableExistenceTrigger will be fired
70
87
when the BigQueryTableExistenceAsyncSensor is executed.
@@ -76,13 +93,14 @@ def test_execute_defered(self):
76
93
table_id = TEST_TABLE_ID ,
77
94
deferrable = True ,
78
95
)
96
+ mock_hook .return_value .table_exists .return_value = False
79
97
with pytest .raises (TaskDeferred ) as exc :
80
- task .execute (context = {} )
98
+ task .execute (mock . MagicMock () )
81
99
assert isinstance (
82
100
exc .value .trigger , BigQueryTableExistenceTrigger
83
101
), "Trigger is not a BigQueryTableExistenceTrigger"
84
102
85
- def test_excute_defered_failure (self ):
103
+ def test_execute_deferred_failure (self ):
86
104
"""Tests that an AirflowException is raised in case of error event"""
87
105
task = BigQueryTableExistenceSensor (
88
106
task_id = "task-id" ,
@@ -148,7 +166,9 @@ def test_passing_arguments_to_hook(self, mock_hook):
148
166
partition_id = TEST_PARTITION_ID ,
149
167
)
150
168
151
- def test_execute_with_deferrable_mode (self ):
169
+ @mock .patch ("airflow.providers.google.cloud.sensors.bigquery.BigQueryHook" )
170
+ @mock .patch ("airflow.providers.google.cloud.sensors.bigquery.BigQueryTablePartitionExistenceSensor.defer" )
171
+ def test_table_partition_existence_sensor_finish_before_deferred (self , mock_defer , mock_hook ):
152
172
"""
153
173
Asserts that a task is deferred and a BigQueryTablePartitionExistenceTrigger will be fired
154
174
when the BigQueryTablePartitionExistenceSensor is executed and deferrable is set to True.
@@ -161,6 +181,25 @@ def test_execute_with_deferrable_mode(self):
161
181
partition_id = TEST_PARTITION_ID ,
162
182
deferrable = True ,
163
183
)
184
+ mock_hook .return_value .table_partition_exists .return_value = True
185
+ task .execute (mock .MagicMock ())
186
+ assert not mock_defer .called
187
+
188
+ @mock .patch ("airflow.providers.google.cloud.sensors.bigquery.BigQueryHook" )
189
+ def test_execute_with_deferrable_mode (self , mock_hook ):
190
+ """
191
+ Asserts that a task is deferred and a BigQueryTablePartitionExistenceTrigger will be fired
192
+ when the BigQueryTablePartitionExistenceSensor is executed and deferrable is set to True.
193
+ """
194
+ task = BigQueryTablePartitionExistenceSensor (
195
+ task_id = "test_task_id" ,
196
+ project_id = TEST_PROJECT_ID ,
197
+ dataset_id = TEST_DATASET_ID ,
198
+ table_id = TEST_TABLE_ID ,
199
+ partition_id = TEST_PARTITION_ID ,
200
+ deferrable = True ,
201
+ )
202
+ mock_hook .return_value .table_partition_exists .return_value = False
164
203
with pytest .raises (TaskDeferred ) as exc :
165
204
task .execute (context = {})
166
205
assert isinstance (
@@ -228,7 +267,8 @@ class TestBigQueryTableExistenceAsyncSensor:
228
267
"set `deferrable` attribute to `True` instead"
229
268
)
230
269
231
- def test_big_query_table_existence_sensor_async (self ):
270
+ @mock .patch ("airflow.providers.google.cloud.sensors.bigquery.BigQueryHook" )
271
+ def test_big_query_table_existence_sensor_async (self , mock_hook ):
232
272
"""
233
273
Asserts that a task is deferred and a BigQueryTableExistenceTrigger will be fired
234
274
when the BigQueryTableExistenceAsyncSensor is executed.
@@ -240,6 +280,7 @@ def test_big_query_table_existence_sensor_async(self):
240
280
dataset_id = TEST_DATASET_ID ,
241
281
table_id = TEST_TABLE_ID ,
242
282
)
283
+ mock_hook .return_value .table_exists .return_value = False
243
284
with pytest .raises (TaskDeferred ) as exc :
244
285
task .execute (context = {})
245
286
assert isinstance (
@@ -293,7 +334,8 @@ class TestBigQueryTableExistencePartitionAsyncSensor:
293
334
"set `deferrable` attribute to `True` instead"
294
335
)
295
336
296
- def test_big_query_table_existence_partition_sensor_async (self ):
337
+ @mock .patch ("airflow.providers.google.cloud.sensors.bigquery.BigQueryHook" )
338
+ def test_big_query_table_existence_partition_sensor_async (self , mock_hook ):
297
339
"""
298
340
Asserts that a task is deferred and a BigQueryTablePartitionExistenceTrigger will be fired
299
341
when the BigQueryTableExistencePartitionAsyncSensor is executed.
@@ -306,8 +348,9 @@ def test_big_query_table_existence_partition_sensor_async(self):
306
348
table_id = TEST_TABLE_ID ,
307
349
partition_id = TEST_PARTITION_ID ,
308
350
)
351
+ mock_hook .return_value .table_partition_exists .return_value = False
309
352
with pytest .raises (TaskDeferred ) as exc :
310
- task .execute (context = {} )
353
+ task .execute (mock . MagicMock () )
311
354
assert isinstance (
312
355
exc .value .trigger , BigQueryTablePartitionExistenceTrigger
313
356
), "Trigger is not a BigQueryTablePartitionExistenceTrigger"
0 commit comments