Kairo-Jinkendo/backend/tests/test_intake_triage_unit.py

58 lines
1.9 KiB
Python
Raw Permalink Normal View History

"""Unit tests — intake_triage proposal."""
from __future__ import annotations
from steering.eval_context import SteeringEvalContext
from steering.kernel.models import HorizonMarker, LifecycleContext, SteeringBinding
from steering.proposals.intake_triage import propose_intake_triage
from tenant_context import TenantContext
def test_intake_triage_proposes_backlog_items():
binding = SteeringBinding(
primary_method_key="sequential_dependency",
composition_modifier=None,
next_work_strategy_key="sequential_dependency",
)
eval_ctx = SteeringEvalContext(
tenant_ctx=TenantContext(
user_id="u1",
email="t@example.com",
display_name="Test",
portal_role="user",
tenant_id="t1",
tenant_slug="t",
tenant_name="T",
tenant_role="admin",
actor_id=None,
actor_type=None,
session_token="test",
capabilities=frozenset(),
),
initiative_id="init-1",
binding=binding,
horizon=HorizonMarker(kind="none"),
lifecycle=LifecycleContext(
current_state="execution",
current_state_label="Ausführung",
slot_map={},
active_slots=(),
operational_slots=(),
),
operating_context={
"steering_elements": ["gate_fulfillment"],
"data_slices": ["backlog"],
"backlog_vocabulary": {"convertible_kinds": ["story", "bug", "issue"]},
},
)
eval_ctx._backlog_items = [
{"id": "b1", "title": "Item", "item_kind": "story", "status": "new", "priority": "normal", "sort_order": 0},
]
eval_ctx._actions = []
eval_ctx._work_cycles = []
result = propose_intake_triage(eval_ctx, read_models={})
assert len(result) == 1
assert result[0]["proposal_key"] == "intake_triage"
assert result[0]["ranker_key"] == "heuristic_v0"