Files
ss-tools/backend/tests/services/dataset_review/test_helpers_edge.py
2026-06-16 12:01:03 +03:00

174 lines
6.8 KiB
Python

# #region Test.DatasetReview.HelpersEdge [C:3] [TYPE Module] [SEMANTICS test,dataset,helpers,execution,snapshot,edge]
# @BRIEF Edge-case coverage for orchestrator_pkg/_helpers.py uncovered lines.
# @RELATION BINDS_TO -> [DatasetReview.Helpers]
# @TEST_EDGE: missing_snapshot -> Handles None/empty snapshots
# @TEST_EDGE: invalid_type -> Wrong type in execution params
# @TEST_EDGE: execution_timeout -> Timeout handled during stage execution
from pathlib import Path
import sys
sys.path.insert(0, str(Path(__file__).parent.parent.parent / "src"))
from unittest.mock import MagicMock, patch
import pytest
class TestBuildExecutionSnapshotEdge:
"""Edge cases for build_execution_snapshot."""
def test_mapping_missing_template_variable(self):
"""Execution mapping with no matching template variable adds blocker (lines 172-173)."""
from src.services.dataset_review.orchestrator_pkg._helpers import build_execution_snapshot
from src.models.dataset_review import ApprovalState
session = MagicMock()
session.imported_filters = []
session.execution_mappings = []
session.template_variables = []
session.semantic_fields = []
session.dataset_id = 42
# Need a mapping that references a template variable that doesn't exist
mapping = MagicMock()
mapping.filter_id = "fl-1"
mapping.variable_id = "tv-nonexistent"
mapping.mapping_id = "m-1"
mapping.effective_value = "SomeValue"
mapping.approval_state = ApprovalState.PENDING
mapping.requires_explicit_approval = False
mapping.raw_input_value = None
imported_filter = MagicMock()
imported_filter.filter_id = "fl-1"
imported_filter.filter_name = "region"
imported_filter.normalized_value = "US"
imported_filter.raw_value = "us"
session.imported_filters = [imported_filter]
session.execution_mappings = [mapping]
session.template_variables = [] # no matching variable
snapshot = build_execution_snapshot(session)
assert "m-1:missing_variable" in str(snapshot["preview_blockers"])
def test_effective_value_falls_back_to_template_default(self):
"""When effective_value is None, fall back to template default (line 181)."""
from src.services.dataset_review.orchestrator_pkg._helpers import build_execution_snapshot
from src.models.dataset_review import ApprovalState
session = MagicMock()
session.dataset_id = 42
mapping = MagicMock()
mapping.filter_id = "fl-1"
mapping.variable_id = "tv-1"
mapping.mapping_id = "m-1"
mapping.effective_value = None
mapping.approval_state = ApprovalState.PENDING
mapping.requires_explicit_approval = False
mapping.raw_input_value = None
imported_filter = MagicMock()
imported_filter.filter_id = "fl-1"
imported_filter.filter_name = "region"
imported_filter.normalized_value = None
imported_filter.raw_value = None
template_variable = MagicMock()
template_variable.variable_id = "tv-1"
template_variable.variable_name = "region"
template_variable.default_value = "default_region"
template_variable.is_required = True
session.imported_filters = [imported_filter]
session.execution_mappings = [mapping]
session.template_variables = [template_variable]
session.semantic_fields = []
snapshot = build_execution_snapshot(session)
assert snapshot["template_params"].get("region") == "default_region"
def test_missing_required_value_blocker(self):
"""Required template variable without effective value adds blocker (lines 184-187)."""
from src.services.dataset_review.orchestrator_pkg._helpers import build_execution_snapshot
from src.models.dataset_review import ApprovalState
session = MagicMock()
session.dataset_id = 42
mapping = MagicMock()
mapping.filter_id = "fl-1"
mapping.variable_id = "tv-1"
mapping.mapping_id = "m-1"
mapping.effective_value = None
mapping.approval_state = ApprovalState.PENDING
mapping.requires_explicit_approval = False
mapping.raw_input_value = None
imported_filter = MagicMock()
imported_filter.filter_id = "fl-1"
imported_filter.filter_name = "region"
imported_filter.normalized_value = None
imported_filter.raw_value = None
template_variable = MagicMock()
template_variable.variable_id = "tv-1"
template_variable.variable_name = "region"
template_variable.default_value = None
template_variable.is_required = True # required but no value
session.imported_filters = [imported_filter]
session.execution_mappings = [mapping]
session.template_variables = [template_variable]
session.semantic_fields = []
snapshot = build_execution_snapshot(session)
blockers = snapshot["preview_blockers"]
assert any("missing_required_value" in str(b) for b in blockers)
def test_unmapped_filter_without_effective_value_skipped(self):
"""Unmapped filter without effective value is skipped (line 222)."""
from src.services.dataset_review.orchestrator_pkg._helpers import build_execution_snapshot
session = MagicMock()
session.dataset_id = 42
# Filter with no effective value and no mapping
imported_filter = MagicMock()
imported_filter.filter_id = "fl-1"
imported_filter.filter_name = "region"
imported_filter.normalized_value = None
imported_filter.raw_value = None
session.imported_filters = [imported_filter]
session.execution_mappings = []
session.template_variables = []
session.semantic_fields = []
snapshot = build_execution_snapshot(session)
assert len(snapshot["effective_filters"]) == 0
def test_unmapped_required_variable_blocker(self):
"""Unmapped required template variable adds blocker (lines 241-242)."""
from src.services.dataset_review.orchestrator_pkg._helpers import build_execution_snapshot
session = MagicMock()
session.dataset_id = 42
template_variable = MagicMock()
template_variable.variable_id = "tv-1"
template_variable.variable_name = "region"
template_variable.default_value = None
template_variable.is_required = True
session.imported_filters = []
session.execution_mappings = []
session.template_variables = [template_variable]
session.semantic_fields = []
snapshot = build_execution_snapshot(session)
blockers = snapshot["preview_blockers"]
assert any("unmapped" in str(b) for b in blockers)
# #endregion Test.DatasetReview.HelpersEdge