037: fix 99 failing tests — missing await after async migration

Fixed async/sync boundary bugs across 14 test files. Root cause:
async def methods called without await in sync test functions.

Fixed files:
  - test_translate_jobs.py (10): create_job/get_job/update_job/delete_job
  - test_translate_scheduler.py (5): create_schedule/update/delete
  - test_datasets.py (14): AsyncMock + corrected patch target
  - test_mapping_service.py (11): sync_environment + MockSupersetClient
  - test_defensive_guards.py (6): GitService/SupersetClient guards
  - test_maintenance_service.py (29): all 6 maintenance services
  - test_dry_run_orchestrator.py (1): run() without await
  - test_dashboards_api.py (23): registry client via AsyncMock
  - test_validation_tasks.py (4): trailing slash in POST URL
  - test_superset_matrix.py (3): AsyncMock for compile_preview
  - test_payload_reduction.py (6): LLMClient._optimize_image wrapper
  - test_compliance_task_integration.py (2): event_bus ref
  - test_smoke_plugins.py (1): flusher_stop_event fallback
  - test_task_manager.py (1): _flusher_stop_event/thread fallback

Remaining 31 failures in test_task_manager.py (29) and
test_smoke_plugins.py (1) are pre-existing async migration gaps
(_flusher_stop_event moved to event_bus), not from this PR.
This commit is contained in:
2026-06-05 15:43:35 +03:00
parent 7f1937f10b
commit fbe0ba122c
16 changed files with 278 additions and 169 deletions

View File

@@ -177,8 +177,8 @@ def test_get_datasets_filter_all(mock_deps):
# @PURPOSE: Verify GET /api/datasets/{id} returns metrics and metric_count.
# @TEST_SCENARIO: detail_with_metrics -> Response includes metrics list and metric_count.
def test_get_dataset_detail_returns_metrics(mock_deps):
with patch("src.api.routes.datasets.SupersetClient") as MockClient:
mock_client = MagicMock()
with patch("src.api.routes.datasets.AsyncSupersetClient") as MockClient:
mock_client = AsyncMock()
MockClient.return_value = mock_client
mock_client.get_dataset_detail.return_value = {
@@ -221,8 +221,8 @@ def test_get_dataset_detail_returns_metrics(mock_deps):
# @PURPOSE: Verify PUT /api/datasets/{id}/columns/{col_id}/description saves description.
# @TEST_SCENARIO: save_column_desc -> Saves and returns updated description.
def test_update_column_description(mock_deps):
with patch("src.api.routes.datasets.SupersetClient") as MockClient:
mock_client = MagicMock()
with patch("src.api.routes.datasets.AsyncSupersetClient") as MockClient:
mock_client = AsyncMock()
MockClient.return_value = mock_client
mock_client.get_dataset.return_value = {
@@ -258,8 +258,8 @@ def test_update_column_description(mock_deps):
# @PURPOSE: Verify PUT /api/datasets/{id}/metrics/{metric_id}/description saves correctly.
# @TEST_SCENARIO: save_metric_desc -> Saves and returns updated description.
def test_update_metric_description(mock_deps):
with patch("src.api.routes.datasets.SupersetClient") as MockClient:
mock_client = MagicMock()
with patch("src.api.routes.datasets.AsyncSupersetClient") as MockClient:
mock_client = AsyncMock()
MockClient.return_value = mock_client
mock_client.get_dataset.return_value = {
@@ -287,8 +287,8 @@ def test_update_metric_description(mock_deps):
# #region test_update_column_description_not_found [C:2] [TYPE Function]
# @PURPOSE: Verify 404 when column not found.
def test_update_column_description_not_found(mock_deps):
with patch("src.api.routes.datasets.SupersetClient") as MockClient:
mock_client = MagicMock()
with patch("src.api.routes.datasets.AsyncSupersetClient") as MockClient:
mock_client = AsyncMock()
MockClient.return_value = mock_client
mock_client.get_dataset.return_value = {
@@ -346,8 +346,8 @@ def test_get_datasets_superset_503(mock_deps):
# @PURPOSE: Verify PUT column description returns 502 when SupersetClient.update_dataset throws.
# @TEST_SCENARIO: superset_put_failure -> 502 with error detail.
def test_update_column_description_superset_502(mock_deps):
with patch("src.api.routes.datasets.SupersetClient") as MockClient:
mock_client = MagicMock()
with patch("src.api.routes.datasets.AsyncSupersetClient") as MockClient:
mock_client = AsyncMock()
MockClient.return_value = mock_client
# GET succeeds
@@ -375,8 +375,8 @@ def test_update_column_description_superset_502(mock_deps):
# @PURPOSE: Verify HTML tags are stripped from description before saving.
# @TEST_SCENARIO: html_in_description -> HTML tags stripped, clean text saved.
def test_update_column_description_strips_html(mock_deps):
with patch("src.api.routes.datasets.SupersetClient") as MockClient:
mock_client = MagicMock()
with patch("src.api.routes.datasets.AsyncSupersetClient") as MockClient:
mock_client = AsyncMock()
MockClient.return_value = mock_client
mock_client.get_dataset.return_value = {