Fix lint/tests

This commit is contained in:
Beto Dealmeida
2026-03-10 13:45:31 -04:00
parent d1cde3c022
commit 69b2114abf
4 changed files with 29 additions and 40 deletions

View File

@@ -37,26 +37,27 @@ def test_semantic_layer_stub_raises() -> None:
def test_inject_semantic_layer_host_context() -> None:
"""The injected decorator registers a class in host context."""
from superset.core.api.core_api_injection import (
inject_semantic_layer_implementations,
)
from superset.semantic_layers.registry import registry
# Clear registry for test isolation
registry.clear()
with patch(
"superset.core.api.core_api_injection.get_current_extension_context",
return_value=None,
):
from superset.core.api.core_api_injection import (
inject_semantic_layer_implementations,
)
inject_semantic_layer_implementations()
inject_semantic_layer_implementations()
import superset_core.semantic_layers.decorators as mod
@mod.semantic_layer(id="test_layer", name="Test Layer", description="A test")
class FakeLayer:
pass
# Host context: no extension context active, so no prefix
with patch(
"superset.extensions.context.get_current_extension_context",
return_value=None,
):
@mod.semantic_layer(id="test_layer", name="Test Layer", description="A test")
class FakeLayer:
pass
assert "test_layer" in registry
assert registry["test_layer"] is FakeLayer
@@ -69,6 +70,9 @@ def test_inject_semantic_layer_host_context() -> None:
def test_inject_semantic_layer_extension_context() -> None:
"""The injected decorator prefixes ID in extension context."""
from superset.core.api.core_api_injection import (
inject_semantic_layer_implementations,
)
from superset.semantic_layers.registry import registry
registry.clear()
@@ -77,29 +81,19 @@ def test_inject_semantic_layer_extension_context() -> None:
mock_context.manifest.publisher = "acme"
mock_context.manifest.name = "analytics"
with patch(
"superset.core.api.core_api_injection.get_current_extension_context",
return_value=None,
):
from superset.core.api.core_api_injection import (
inject_semantic_layer_implementations,
)
inject_semantic_layer_implementations()
inject_semantic_layer_implementations()
import superset_core.semantic_layers.decorators as mod
# Now simulate extension context for the decorator call
# Extension context is checked at decorator call time via module lookup
with patch(
"superset.core.api.core_api_injection.get_current_extension_context",
"superset.extensions.context.get_current_extension_context",
return_value=mock_context,
):
# Re-inject so the closure captures the mock context
inject_semantic_layer_implementations()
@mod.semantic_layer(id="ext_layer", name="Extension Layer")
class ExtLayer:
pass
@mod.semantic_layer(id="ext_layer", name="Extension Layer")
class ExtLayer:
pass
expected_id = "extensions.acme.analytics.ext_layer"
assert expected_id in registry

View File

@@ -1004,7 +1004,7 @@ def test_convert_query_object_filter_unknown_operator(
mock_datasource: MagicMock,
) -> None:
"""
Test filter with unknown operator returns None.
Test filter with unknown operator raises ValueError.
"""
all_dimensions = {
dim.name: dim for dim in mock_datasource.implementation.dimensions
@@ -1016,9 +1016,8 @@ def test_convert_query_object_filter_unknown_operator(
"val": "Electronics",
}
result = _convert_query_object_filter(filter_, all_dimensions)
assert result is None
with pytest.raises(ValueError, match="Unsupported filter operator"):
_convert_query_object_filter(filter_, all_dimensions)
def test_validate_query_object_undefined_metric_error(