dabla commented on code in PR #41331:
URL: https://github.com/apache/airflow/pull/41331#discussion_r1817277645
##########
tests/providers/microsoft/azure/triggers/test_powerbi.py:
##########
@@ -91,167 +81,170 @@ def test_powerbi_trigger_serialization():
"wait_for_termination": True,
}
-
[email protected]
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.get_refresh_details_by_refresh_id")
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.trigger_dataset_refresh")
-async def test_powerbi_trigger_run_inprogress(
- mock_trigger_dataset_refresh, mock_get_refresh_details_by_refresh_id,
powerbi_trigger
-):
- """Assert task isn't completed until timeout if dataset refresh is in
progress."""
- mock_get_refresh_details_by_refresh_id.return_value = {"status":
PowerBIDatasetRefreshStatus.IN_PROGRESS}
- mock_trigger_dataset_refresh.return_value = DATASET_REFRESH_ID
- task = asyncio.create_task(powerbi_trigger.run().__anext__())
- await asyncio.sleep(0.5)
-
- # Assert TriggerEvent was not returned
- assert task.done() is False
- asyncio.get_event_loop().stop()
-
-
[email protected]
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.get_refresh_details_by_refresh_id")
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.trigger_dataset_refresh")
-async def test_powerbi_trigger_run_failed(
- mock_trigger_dataset_refresh, mock_get_refresh_details_by_refresh_id,
powerbi_trigger
-):
- """Assert event is triggered upon failed dataset refresh."""
- mock_get_refresh_details_by_refresh_id.return_value = {"status":
PowerBIDatasetRefreshStatus.FAILED}
- mock_trigger_dataset_refresh.return_value = DATASET_REFRESH_ID
-
- generator = powerbi_trigger.run()
- actual = await generator.asend(None)
- expected = TriggerEvent(
- {
- "status": "Failed",
- "message": f"The dataset refresh {DATASET_REFRESH_ID} has "
- f"{PowerBIDatasetRefreshStatus.FAILED}.",
- "dataset_refresh_id": DATASET_REFRESH_ID,
- }
- )
- assert expected == actual
-
-
[email protected]
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.get_refresh_details_by_refresh_id")
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.trigger_dataset_refresh")
-async def test_powerbi_trigger_run_completed(
- mock_trigger_dataset_refresh, mock_get_refresh_details_by_refresh_id,
powerbi_trigger
-):
- """Assert event is triggered upon successful dataset refresh."""
- mock_get_refresh_details_by_refresh_id.return_value = {"status":
PowerBIDatasetRefreshStatus.COMPLETED}
- mock_trigger_dataset_refresh.return_value = DATASET_REFRESH_ID
-
- generator = powerbi_trigger.run()
- actual = await generator.asend(None)
- expected = TriggerEvent(
- {
- "status": "Completed",
- "message": f"The dataset refresh {DATASET_REFRESH_ID} has "
- f"{PowerBIDatasetRefreshStatus.COMPLETED}.",
- "dataset_refresh_id": DATASET_REFRESH_ID,
- }
- )
- assert expected == actual
-
-
[email protected]
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.cancel_dataset_refresh")
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.get_refresh_details_by_refresh_id")
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.trigger_dataset_refresh")
-async def test_powerbi_trigger_run_exception_during_refresh_check_loop(
- mock_trigger_dataset_refresh,
- mock_get_refresh_details_by_refresh_id,
- mock_cancel_dataset_refresh,
- powerbi_trigger,
-):
- """Assert that run catch exception if Power BI API throw exception"""
- mock_get_refresh_details_by_refresh_id.side_effect = Exception("Test
exception")
- mock_trigger_dataset_refresh.return_value = DATASET_REFRESH_ID
-
- task = [i async for i in powerbi_trigger.run()]
- response = TriggerEvent(
- {
- "status": "error",
- "message": "An error occurred: Test exception",
- "dataset_refresh_id": DATASET_REFRESH_ID,
- }
- )
- assert len(task) == 1
- assert response in task
- mock_cancel_dataset_refresh.assert_called_once()
-
-
[email protected]
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.cancel_dataset_refresh")
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.get_refresh_details_by_refresh_id")
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.trigger_dataset_refresh")
-async def test_powerbi_trigger_run_exception_during_refresh_cancellation(
- mock_trigger_dataset_refresh,
- mock_get_refresh_details_by_refresh_id,
- mock_cancel_dataset_refresh,
- powerbi_trigger,
-):
- """Assert that run catch exception if Power BI API throw exception"""
- mock_get_refresh_details_by_refresh_id.side_effect = Exception("Test
exception")
- mock_cancel_dataset_refresh.side_effect = Exception("Exception caused by
cancel_dataset_refresh")
- mock_trigger_dataset_refresh.return_value = DATASET_REFRESH_ID
-
- task = [i async for i in powerbi_trigger.run()]
- response = TriggerEvent(
- {
- "status": "error",
- "message": "An error occurred while canceling dataset: Exception
caused by cancel_dataset_refresh",
- "dataset_refresh_id": DATASET_REFRESH_ID,
+ @pytest.mark.asyncio
+
@mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.get_refresh_details_by_refresh_id")
+ @mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.trigger_dataset_refresh")
+ async def test_powerbi_trigger_run_inprogress(
+ self, mock_trigger_dataset_refresh,
mock_get_refresh_details_by_refresh_id, powerbi_trigger
+ ):
+ """Assert task isn't completed until timeout if dataset refresh is in
progress."""
+ mock_get_refresh_details_by_refresh_id.return_value = {
+ "status": PowerBIDatasetRefreshStatus.IN_PROGRESS
}
- )
-
- assert len(task) == 1
- assert response in task
- mock_cancel_dataset_refresh.assert_called_once()
-
-
[email protected]
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.get_refresh_details_by_refresh_id")
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.trigger_dataset_refresh")
-async def test_powerbi_trigger_run_exception_without_refresh_id(
- mock_trigger_dataset_refresh, mock_get_refresh_details_by_refresh_id,
powerbi_trigger
-):
- """Assert handling of exception when there is no dataset_refresh_id"""
- powerbi_trigger.dataset_refresh_id = None
- mock_get_refresh_details_by_refresh_id.side_effect = Exception("Test
exception for no dataset_refresh_id")
- mock_trigger_dataset_refresh.return_value = None
+ mock_trigger_dataset_refresh.return_value = DATASET_REFRESH_ID
+ task = asyncio.create_task(powerbi_trigger.run().__anext__())
+ await asyncio.sleep(0.5)
+
+ # Assert TriggerEvent was not returned
+ assert task.done() is False
+ asyncio.get_event_loop().stop()
+
+ @pytest.mark.asyncio
+
@mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.get_refresh_details_by_refresh_id")
+ @mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.trigger_dataset_refresh")
+ async def test_powerbi_trigger_run_failed(
+ self, mock_trigger_dataset_refresh,
mock_get_refresh_details_by_refresh_id, powerbi_trigger
+ ):
+ """Assert event is triggered upon failed dataset refresh."""
+ mock_get_refresh_details_by_refresh_id.return_value = {"status":
PowerBIDatasetRefreshStatus.FAILED}
+ mock_trigger_dataset_refresh.return_value = DATASET_REFRESH_ID
+
+ generator = powerbi_trigger.run()
+ actual = await generator.asend(None)
+ expected = TriggerEvent(
+ {
+ "status": "Failed",
+ "message": f"The dataset refresh {DATASET_REFRESH_ID} has "
+ f"{PowerBIDatasetRefreshStatus.FAILED}.",
+ "dataset_refresh_id": DATASET_REFRESH_ID,
+ }
+ )
+ assert expected == actual
- task = [i async for i in powerbi_trigger.run()]
- response = TriggerEvent(
- {
- "status": "error",
- "message": "An error occurred: Test exception for no
dataset_refresh_id",
- "dataset_refresh_id": None,
+ @pytest.mark.asyncio
+
@mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.get_refresh_details_by_refresh_id")
+ @mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.trigger_dataset_refresh")
+ async def test_powerbi_trigger_run_completed(
+ self, mock_trigger_dataset_refresh,
mock_get_refresh_details_by_refresh_id, powerbi_trigger
+ ):
+ """Assert event is triggered upon successful dataset refresh."""
+ mock_get_refresh_details_by_refresh_id.return_value = {
+ "status": PowerBIDatasetRefreshStatus.COMPLETED
}
- )
- assert len(task) == 1
- assert response in task
-
+ mock_trigger_dataset_refresh.return_value = DATASET_REFRESH_ID
+
+ generator = powerbi_trigger.run()
+ actual = await generator.asend(None)
+ expected = TriggerEvent(
+ {
+ "status": "Completed",
+ "message": f"The dataset refresh {DATASET_REFRESH_ID} has "
+ f"{PowerBIDatasetRefreshStatus.COMPLETED}.",
+ "dataset_refresh_id": DATASET_REFRESH_ID,
+ }
+ )
+ assert expected == actual
+
+ @pytest.mark.asyncio
+ @mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.cancel_dataset_refresh")
+
@mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.get_refresh_details_by_refresh_id")
+ @mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.trigger_dataset_refresh")
+ async def test_powerbi_trigger_run_exception_during_refresh_check_loop(
+ self,
+ mock_trigger_dataset_refresh,
+ mock_get_refresh_details_by_refresh_id,
+ mock_cancel_dataset_refresh,
+ powerbi_trigger,
+ ):
+ """Assert that run catch exception if Power BI API throw exception"""
+ mock_get_refresh_details_by_refresh_id.side_effect = Exception("Test
exception")
+ mock_trigger_dataset_refresh.return_value = DATASET_REFRESH_ID
+
+ task = [i async for i in powerbi_trigger.run()]
+ response = TriggerEvent(
+ {
+ "status": "error",
+ "message": "An error occurred: Test exception",
+ "dataset_refresh_id": DATASET_REFRESH_ID,
+ }
+ )
+ assert len(task) == 1
+ assert response in task
+ mock_cancel_dataset_refresh.assert_called_once()
+
+ @pytest.mark.asyncio
+ @mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.cancel_dataset_refresh")
+
@mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.get_refresh_details_by_refresh_id")
+ @mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.trigger_dataset_refresh")
+ async def test_powerbi_trigger_run_exception_during_refresh_cancellation(
+ self,
+ mock_trigger_dataset_refresh,
+ mock_get_refresh_details_by_refresh_id,
+ mock_cancel_dataset_refresh,
+ powerbi_trigger,
+ ):
+ """Assert that run catch exception if Power BI API throw exception"""
+ mock_get_refresh_details_by_refresh_id.side_effect = Exception("Test
exception")
+ mock_cancel_dataset_refresh.side_effect = Exception("Exception caused
by cancel_dataset_refresh")
+ mock_trigger_dataset_refresh.return_value = DATASET_REFRESH_ID
+
+ task = [i async for i in powerbi_trigger.run()]
+ response = TriggerEvent(
+ {
+ "status": "error",
+ "message": "An error occurred while canceling dataset:
Exception caused by cancel_dataset_refresh",
+ "dataset_refresh_id": DATASET_REFRESH_ID,
+ }
+ )
[email protected]
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.get_refresh_details_by_refresh_id")
[email protected](f"{MODULE}.hooks.powerbi.PowerBIHook.trigger_dataset_refresh")
-async def test_powerbi_trigger_run_timeout(
- mock_trigger_dataset_refresh, mock_get_refresh_details_by_refresh_id,
powerbi_trigger
-):
- """Assert that powerbi run timesout after end_time elapses"""
- mock_get_refresh_details_by_refresh_id.return_value = {"status":
PowerBIDatasetRefreshStatus.IN_PROGRESS}
- mock_trigger_dataset_refresh.return_value = DATASET_REFRESH_ID
+ assert len(task) == 1
+ assert response in task
+ mock_cancel_dataset_refresh.assert_called_once()
- generator = powerbi_trigger.run()
- actual = await generator.asend(None)
- expected = TriggerEvent(
- {
- "status": "error",
- "message": f"Timeout occurred while waiting for dataset refresh to
complete: The dataset refresh {DATASET_REFRESH_ID} has status In Progress.",
- "dataset_refresh_id": DATASET_REFRESH_ID,
+ @pytest.mark.asyncio
+
@mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.get_refresh_details_by_refresh_id")
+ @mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.trigger_dataset_refresh")
+ async def test_powerbi_trigger_run_exception_without_refresh_id(
+ self, mock_trigger_dataset_refresh,
mock_get_refresh_details_by_refresh_id, powerbi_trigger
+ ):
+ """Assert handling of exception when there is no dataset_refresh_id"""
+ powerbi_trigger.dataset_refresh_id = None
+ mock_get_refresh_details_by_refresh_id.side_effect = Exception(
+ "Test exception for no dataset_refresh_id"
+ )
+ mock_trigger_dataset_refresh.return_value = None
+
+ task = [i async for i in powerbi_trigger.run()]
+ response = TriggerEvent(
+ {
+ "status": "error",
+ "message": "An error occurred: Test exception for no
dataset_refresh_id",
+ "dataset_refresh_id": None,
+ }
+ )
+ assert len(task) == 1
+ assert response in task
+
+ @pytest.mark.asyncio
+
@mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.get_refresh_details_by_refresh_id")
+ @mock.patch(f"{MODULE}.hooks.powerbi.PowerBIHook.trigger_dataset_refresh")
+ async def test_powerbi_trigger_run_timeout(
Review Comment:
> Hi @jscheffl, Thank you for reviewing it. I will look into this test.
Thank you @ambika-garg for looking into it.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]