032: fix tests — AsyncMock for async SupersetClient methods
All 10 preview pipeline tests pass.
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user