032: fix tests — AsyncMock for async SupersetClient methods

All 10 preview pipeline tests pass.
This commit is contained in:
2026-06-04 20:42:31 +03:00
parent 3bb5e6dde7
commit 2e95971b1b

View File

@@ -4,7 +4,7 @@
# @RELATION BINDS_TO -> [AsyncNetworkModule]
import json
import pytest
from unittest.mock import MagicMock
from unittest.mock import AsyncMock, MagicMock
import httpx
import requests
@@ -51,9 +51,10 @@ def _make_httpx_status_error(status_code: int, url: str) -> httpx.HTTPStatusErro
# #region test_compile_dataset_preview_prefers_legacy_explore_form_data_strategy [TYPE Function]
# @RELATION BINDS_TO -> SupersetPreviewPipelineTests
# @BRIEF Superset preview compilation should prefer the legacy form_data transport inferred from browser traffic before falling back to chart-data.
def test_compile_dataset_preview_prefers_legacy_explore_form_data_strategy():
@pytest.mark.asyncio
async def test_compile_dataset_preview_prefers_legacy_explore_form_data_strategy():
client = SupersetClient(_make_environment())
client.get_dataset = MagicMock(
client.get_dataset = AsyncMock(
return_value={
"result": {
"id": 42,
@@ -64,13 +65,14 @@ def test_compile_dataset_preview_prefers_legacy_explore_form_data_strategy():
}
}
)
client.network = MagicMock()
client.network.request.return_value = {
client.client = AsyncMock()
client.client.request = AsyncMock()
client.client.request.return_value = {
"result": {
"query": "SELECT count(*) FROM public.sales WHERE country IN ('DE')",
}
}
result = client.compile_dataset_preview(
result = await client.compile_dataset_preview(
dataset_id=42,
template_params={"country": "DE"},
effective_filters=[{"filter_name": "country", "effective_value": ["DE"]}],
@@ -79,8 +81,8 @@ def test_compile_dataset_preview_prefers_legacy_explore_form_data_strategy():
result["compiled_sql"]
== "SELECT count(*) FROM public.sales WHERE country IN ('DE')"
)
client.network.request.assert_called_once()
request_call = client.network.request.call_args
client.client.request.assert_called_once()
request_call = client.client.request.call_args
assert request_call.kwargs["method"] == "POST"
assert request_call.kwargs["endpoint"] == "/explore_json/form_data"
assert request_call.kwargs["params"] is not None
@@ -129,9 +131,10 @@ def test_compile_dataset_preview_prefers_legacy_explore_form_data_strategy():
# #region test_compile_dataset_preview_falls_back_to_chart_data_after_legacy_failures [TYPE Function]
# @RELATION BINDS_TO -> SupersetPreviewPipelineTests
# @BRIEF Superset preview compilation should fall back to chart-data when legacy form_data strategies are rejected.
def test_compile_dataset_preview_falls_back_to_chart_data_after_legacy_failures():
@pytest.mark.asyncio
async def test_compile_dataset_preview_falls_back_to_chart_data_after_legacy_failures():
client = SupersetClient(_make_environment())
client.get_dataset = MagicMock(
client.get_dataset = AsyncMock(
return_value={
"result": {
"id": 42,
@@ -140,23 +143,20 @@ def test_compile_dataset_preview_falls_back_to_chart_data_after_legacy_failures(
}
}
)
client.network = MagicMock()
client.network.request.side_effect = [
client.client = MagicMock()
client.client.request = AsyncMock()
client.client.request.side_effect = [
SupersetAPIError("legacy explore failed"),
SupersetAPIError("legacy data failed"),
{
"result": [
{
"query": "SELECT count(*) FROM public.sales",
}
]
"result": [{"query": "SELECT count(*) FROM public.sales"}]
},
]
result = client.compile_dataset_preview(dataset_id=42)
assert client.network.request.call_count == 3
first_call = client.network.request.call_args_list[0]
second_call = client.network.request.call_args_list[1]
third_call = client.network.request.call_args_list[2]
result = await client.compile_dataset_preview(dataset_id=42)
assert client.client.request.call_count == 3
first_call = client.client.request.call_args_list[0]
second_call = client.client.request.call_args_list[1]
third_call = client.client.request.call_args_list[2]
assert first_call.kwargs["endpoint"] == "/explore_json/form_data"
assert second_call.kwargs["endpoint"] == "/data"
assert third_call.kwargs["endpoint"] == "/chart/data"