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]
|
# @RELATION BINDS_TO -> [AsyncNetworkModule]
|
||||||
import json
|
import json
|
||||||
import pytest
|
import pytest
|
||||||
from unittest.mock import MagicMock
|
from unittest.mock import AsyncMock, MagicMock
|
||||||
|
|
||||||
import httpx
|
import httpx
|
||||||
import requests
|
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]
|
# #region test_compile_dataset_preview_prefers_legacy_explore_form_data_strategy [TYPE Function]
|
||||||
# @RELATION BINDS_TO -> SupersetPreviewPipelineTests
|
# @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.
|
# @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 = SupersetClient(_make_environment())
|
||||||
client.get_dataset = MagicMock(
|
client.get_dataset = AsyncMock(
|
||||||
return_value={
|
return_value={
|
||||||
"result": {
|
"result": {
|
||||||
"id": 42,
|
"id": 42,
|
||||||
@@ -64,13 +65,14 @@ def test_compile_dataset_preview_prefers_legacy_explore_form_data_strategy():
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
client.network = MagicMock()
|
client.client = AsyncMock()
|
||||||
client.network.request.return_value = {
|
client.client.request = AsyncMock()
|
||||||
|
client.client.request.return_value = {
|
||||||
"result": {
|
"result": {
|
||||||
"query": "SELECT count(*) FROM public.sales WHERE country IN ('DE')",
|
"query": "SELECT count(*) FROM public.sales WHERE country IN ('DE')",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result = client.compile_dataset_preview(
|
result = await client.compile_dataset_preview(
|
||||||
dataset_id=42,
|
dataset_id=42,
|
||||||
template_params={"country": "DE"},
|
template_params={"country": "DE"},
|
||||||
effective_filters=[{"filter_name": "country", "effective_value": ["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"]
|
result["compiled_sql"]
|
||||||
== "SELECT count(*) FROM public.sales WHERE country IN ('DE')"
|
== "SELECT count(*) FROM public.sales WHERE country IN ('DE')"
|
||||||
)
|
)
|
||||||
client.network.request.assert_called_once()
|
client.client.request.assert_called_once()
|
||||||
request_call = client.network.request.call_args
|
request_call = client.client.request.call_args
|
||||||
assert request_call.kwargs["method"] == "POST"
|
assert request_call.kwargs["method"] == "POST"
|
||||||
assert request_call.kwargs["endpoint"] == "/explore_json/form_data"
|
assert request_call.kwargs["endpoint"] == "/explore_json/form_data"
|
||||||
assert request_call.kwargs["params"] is not None
|
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]
|
# #region test_compile_dataset_preview_falls_back_to_chart_data_after_legacy_failures [TYPE Function]
|
||||||
# @RELATION BINDS_TO -> SupersetPreviewPipelineTests
|
# @RELATION BINDS_TO -> SupersetPreviewPipelineTests
|
||||||
# @BRIEF Superset preview compilation should fall back to chart-data when legacy form_data strategies are rejected.
|
# @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 = SupersetClient(_make_environment())
|
||||||
client.get_dataset = MagicMock(
|
client.get_dataset = AsyncMock(
|
||||||
return_value={
|
return_value={
|
||||||
"result": {
|
"result": {
|
||||||
"id": 42,
|
"id": 42,
|
||||||
@@ -140,23 +143,20 @@ def test_compile_dataset_preview_falls_back_to_chart_data_after_legacy_failures(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
client.network = MagicMock()
|
client.client = MagicMock()
|
||||||
client.network.request.side_effect = [
|
client.client.request = AsyncMock()
|
||||||
|
client.client.request.side_effect = [
|
||||||
SupersetAPIError("legacy explore failed"),
|
SupersetAPIError("legacy explore failed"),
|
||||||
SupersetAPIError("legacy data failed"),
|
SupersetAPIError("legacy data failed"),
|
||||||
{
|
{
|
||||||
"result": [
|
"result": [{"query": "SELECT count(*) FROM public.sales"}]
|
||||||
{
|
|
||||||
"query": "SELECT count(*) FROM public.sales",
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
result = client.compile_dataset_preview(dataset_id=42)
|
result = await client.compile_dataset_preview(dataset_id=42)
|
||||||
assert client.network.request.call_count == 3
|
assert client.client.request.call_count == 3
|
||||||
first_call = client.network.request.call_args_list[0]
|
first_call = client.client.request.call_args_list[0]
|
||||||
second_call = client.network.request.call_args_list[1]
|
second_call = client.client.request.call_args_list[1]
|
||||||
third_call = client.network.request.call_args_list[2]
|
third_call = client.client.request.call_args_list[2]
|
||||||
assert first_call.kwargs["endpoint"] == "/explore_json/form_data"
|
assert first_call.kwargs["endpoint"] == "/explore_json/form_data"
|
||||||
assert second_call.kwargs["endpoint"] == "/data"
|
assert second_call.kwargs["endpoint"] == "/data"
|
||||||
assert third_call.kwargs["endpoint"] == "/chart/data"
|
assert third_call.kwargs["endpoint"] == "/chart/data"
|
||||||
|
|||||||
Reference in New Issue
Block a user