subagents
This commit is contained in:
@@ -299,6 +299,16 @@ def _make_us3_session():
|
||||
# [/DEF:_make_us3_session:Function]
|
||||
|
||||
|
||||
# [DEF:_make_preview_ready_session:Function]
|
||||
def _make_preview_ready_session():
|
||||
session = _make_us3_session()
|
||||
session.readiness_state = ReadinessState.COMPILED_PREVIEW_READY
|
||||
session.recommended_action = RecommendedAction.GENERATE_SQL_PREVIEW
|
||||
session.current_phase = SessionPhase.PREVIEW
|
||||
return session
|
||||
# [/DEF:_make_preview_ready_session:Function]
|
||||
|
||||
|
||||
# [DEF:dataset_review_api_dependencies:Function]
|
||||
@pytest.fixture(autouse=True)
|
||||
def dataset_review_api_dependencies():
|
||||
@@ -605,7 +615,11 @@ def test_orchestrator_start_session_bootstraps_recovery_state(dataset_review_api
|
||||
"filter_name": "country",
|
||||
"display_name": "Country",
|
||||
"raw_value": ["DE"],
|
||||
"normalized_value": ["DE"],
|
||||
"normalized_value": {
|
||||
"filter_clauses": [{"col": "country_code", "op": "IN", "val": ["DE"]}],
|
||||
"extra_form_data": {"filters": [{"col": "country_code", "op": "IN", "val": ["DE"]}]},
|
||||
"value_origin": "extra_form_data.filters",
|
||||
},
|
||||
"source": "superset_url",
|
||||
"confidence_state": "imported",
|
||||
"requires_confirmation": False,
|
||||
@@ -650,6 +664,11 @@ def test_orchestrator_start_session_bootstraps_recovery_state(dataset_review_api
|
||||
saved_mappings = repository.save_recovery_state.call_args.args[4]
|
||||
assert len(saved_filters) == 1
|
||||
assert saved_filters[0].filter_name == "country"
|
||||
assert saved_filters[0].normalized_value == {
|
||||
"filter_clauses": [{"col": "country_code", "op": "IN", "val": ["DE"]}],
|
||||
"extra_form_data": {"filters": [{"col": "country_code", "op": "IN", "val": ["DE"]}]},
|
||||
"value_origin": "extra_form_data.filters",
|
||||
}
|
||||
assert len(saved_variables) == 1
|
||||
assert saved_variables[0].variable_name == "country"
|
||||
assert len(saved_mappings) == 1
|
||||
@@ -1095,6 +1114,137 @@ def test_us3_preview_endpoint_returns_failed_preview_without_false_dashboard_not
|
||||
# [/DEF:test_us3_preview_endpoint_returns_failed_preview_without_false_dashboard_not_found_contract_drift:Function]
|
||||
|
||||
|
||||
# [DEF:test_execution_snapshot_includes_recovered_imported_filters_without_template_mapping:Function]
|
||||
# @PURPOSE: Recovered imported filters with values should flow into preview filter context even when no template variable mapping exists.
|
||||
def test_execution_snapshot_includes_recovered_imported_filters_without_template_mapping(
|
||||
dataset_review_api_dependencies,
|
||||
):
|
||||
repository = MagicMock()
|
||||
repository.db = MagicMock()
|
||||
repository.event_logger = MagicMock(spec=SessionEventLogger)
|
||||
orchestrator = DatasetReviewOrchestrator(
|
||||
repository=repository,
|
||||
config_manager=dataset_review_api_dependencies["config_manager"],
|
||||
task_manager=None,
|
||||
)
|
||||
session = _make_preview_ready_session()
|
||||
|
||||
recovered_filter = MagicMock()
|
||||
recovered_filter.filter_id = "filter-country"
|
||||
recovered_filter.filter_name = "country"
|
||||
recovered_filter.display_name = "Country"
|
||||
recovered_filter.raw_value = ["DE", "FR"]
|
||||
recovered_filter.normalized_value = ["DE", "FR"]
|
||||
recovered_filter.requires_confirmation = False
|
||||
recovered_filter.recovery_status = "recovered"
|
||||
|
||||
session.imported_filters = [recovered_filter]
|
||||
session.template_variables = []
|
||||
session.execution_mappings = []
|
||||
session.semantic_fields = []
|
||||
|
||||
snapshot = orchestrator._build_execution_snapshot(session)
|
||||
|
||||
assert snapshot["template_params"] == {}
|
||||
assert snapshot["preview_blockers"] == []
|
||||
recovered_filter.normalized_value = {
|
||||
"filter_clauses": [{"col": "country_code", "op": "IN", "val": ["DE", "FR"]}],
|
||||
"extra_form_data": {"filters": [{"col": "country_code", "op": "IN", "val": ["DE", "FR"]}]},
|
||||
"value_origin": "extra_form_data.filters",
|
||||
}
|
||||
|
||||
snapshot = orchestrator._build_execution_snapshot(session)
|
||||
|
||||
assert snapshot["template_params"] == {}
|
||||
assert snapshot["preview_blockers"] == []
|
||||
assert snapshot["effective_filters"] == [
|
||||
{
|
||||
"filter_id": "filter-country",
|
||||
"filter_name": "country",
|
||||
"display_name": "Country",
|
||||
"effective_value": ["DE", "FR"],
|
||||
"raw_input_value": ["DE", "FR"],
|
||||
"normalized_filter_payload": {
|
||||
"filter_clauses": [{"col": "country_code", "op": "IN", "val": ["DE", "FR"]}],
|
||||
"extra_form_data": {"filters": [{"col": "country_code", "op": "IN", "val": ["DE", "FR"]}]},
|
||||
"value_origin": "extra_form_data.filters",
|
||||
},
|
||||
}
|
||||
]
|
||||
# [/DEF:test_execution_snapshot_includes_recovered_imported_filters_without_template_mapping:Function]
|
||||
|
||||
|
||||
# [DEF:test_execution_snapshot_preserves_mapped_template_variables_and_filter_context:Function]
|
||||
# @PURPOSE: Mapped template variables should still populate template params while contributing their effective filter context.
|
||||
def test_execution_snapshot_preserves_mapped_template_variables_and_filter_context(
|
||||
dataset_review_api_dependencies,
|
||||
):
|
||||
repository = MagicMock()
|
||||
repository.db = MagicMock()
|
||||
repository.event_logger = MagicMock(spec=SessionEventLogger)
|
||||
orchestrator = DatasetReviewOrchestrator(
|
||||
repository=repository,
|
||||
config_manager=dataset_review_api_dependencies["config_manager"],
|
||||
task_manager=None,
|
||||
)
|
||||
session = _make_preview_ready_session()
|
||||
|
||||
snapshot = orchestrator._build_execution_snapshot(session)
|
||||
|
||||
assert snapshot["template_params"] == {"country": "DE"}
|
||||
assert snapshot["preview_blockers"] == []
|
||||
assert snapshot["effective_filters"] == [
|
||||
{
|
||||
"mapping_id": "map-1",
|
||||
"filter_id": "filter-1",
|
||||
"filter_name": "country",
|
||||
"variable_id": "var-1",
|
||||
"variable_name": "country",
|
||||
"effective_value": "DE",
|
||||
"raw_input_value": "DE",
|
||||
}
|
||||
]
|
||||
assert snapshot["open_warning_refs"] == ["map-1"]
|
||||
# [/DEF:test_execution_snapshot_preserves_mapped_template_variables_and_filter_context:Function]
|
||||
|
||||
|
||||
# [DEF:test_execution_snapshot_skips_partial_imported_filters_without_values:Function]
|
||||
# @PURPOSE: Partial imported filters without raw or normalized values must not emit bogus active preview filters.
|
||||
def test_execution_snapshot_skips_partial_imported_filters_without_values(
|
||||
dataset_review_api_dependencies,
|
||||
):
|
||||
repository = MagicMock()
|
||||
repository.db = MagicMock()
|
||||
repository.event_logger = MagicMock(spec=SessionEventLogger)
|
||||
orchestrator = DatasetReviewOrchestrator(
|
||||
repository=repository,
|
||||
config_manager=dataset_review_api_dependencies["config_manager"],
|
||||
task_manager=None,
|
||||
)
|
||||
session = _make_preview_ready_session()
|
||||
|
||||
unresolved_filter = MagicMock()
|
||||
unresolved_filter.filter_id = "filter-region"
|
||||
unresolved_filter.filter_name = "region"
|
||||
unresolved_filter.display_name = "Region"
|
||||
unresolved_filter.raw_value = None
|
||||
unresolved_filter.normalized_value = None
|
||||
unresolved_filter.requires_confirmation = True
|
||||
unresolved_filter.recovery_status = "partial"
|
||||
|
||||
session.imported_filters = [unresolved_filter]
|
||||
session.template_variables = []
|
||||
session.execution_mappings = []
|
||||
session.semantic_fields = []
|
||||
|
||||
snapshot = orchestrator._build_execution_snapshot(session)
|
||||
|
||||
assert snapshot["template_params"] == {}
|
||||
assert snapshot["effective_filters"] == []
|
||||
assert snapshot["preview_blockers"] == []
|
||||
# [/DEF:test_execution_snapshot_skips_partial_imported_filters_without_values:Function]
|
||||
|
||||
|
||||
# [DEF:test_us3_launch_endpoint_requires_launch_permission:Function]
|
||||
# @PURPOSE: Launch endpoint should enforce the contract RBAC permission instead of the generic session-manage permission.
|
||||
def test_us3_launch_endpoint_requires_launch_permission(dataset_review_api_dependencies):
|
||||
|
||||
Reference in New Issue
Block a user