Files
Jyotisha/tests/test_mcp_strict_workflow_career.py
T
2026-06-28 14:56:28 +08:00

97 lines
3.4 KiB
Python

#!/usr/bin/env python3
"""Regression tests for MCP career event adjudication."""
from __future__ import annotations
from mcp_server import _collect_strict_evidence
def _base_career_result() -> dict:
return {
"modules": {
"varga_full": {"D10_Dasamsa": {"summary": "career varga present"}},
"special_lagnas": {"A10_Karma_Pada": {"sign": "Capricorn", "lord": "Saturn"}},
"jaimini": {
"karakas": {
"Amatyakaraka": {"planet": "Mercury"},
"Atmakaraka": {"planet": "Sun"},
},
"karakamsha": {"karakamsha_sign": "Leo", "karakamsha_lord": "Sun"},
},
"dasha": {"current_dasha": {"mahadasha": "Mercury", "antardasha": "Sun"}},
"narayana_dasha": {"current_dasha": {"sign": "Capricorn", "lord": "Saturn"}},
"dasa_convergence": {
"domain_activations": {
"career_status": {"convergence_level": "L2", "probability": "35-50%"}
}
},
"argala": {
"houses": {
"house_10": {
"net_result": "supported",
"argala_count": 2,
"virodhargala_count": 0,
}
}
},
}
}
def test_career_collects_a10_amk_karakamsha_as_strict_evidence() -> None:
strict = _collect_strict_evidence("career", _base_career_result())
assert strict["question_type"] == "career"
assert strict["present_evidence"]["d10_dasamsa"] == {"summary": "career varga present"}
assert strict["present_evidence"]["a10_karma_pada"] == {"sign": "Capricorn", "lord": "Saturn"}
assert strict["present_evidence"]["amatyakaraka"] == {"planet": "Mercury"}
assert strict["present_evidence"]["karakamsha"] == {
"karakamsha_sign": "Leo",
"karakamsha_lord": "Sun",
}
assert strict["event_judgement"]["event_family"] == "career"
assert strict["event_judgement"]["dominant_label"] == "career_status"
assert strict["event_judgement"]["secondary_context"] == [
"a10_active",
"amk_active",
"karakamsha_context",
"argala_support",
]
def test_career_blocks_label_when_d10_is_missing_but_preserves_jaimini_context() -> None:
result = _base_career_result()
del result["modules"]["varga_full"]["D10_Dasamsa"]
strict = _collect_strict_evidence("career", result)
assert "d10_dasamsa" in strict["missing_evidence"]
assert strict["blocked"] is True
assert strict["event_judgement"]["dominant_label"] is None
assert strict["event_judgement"]["secondary_context"] == [
"a10_active",
"amk_active",
"karakamsha_context",
"argala_support",
]
def test_career_argala_bridge_uses_tenth_house_as_modifier_only() -> None:
result = _base_career_result()
strict = _collect_strict_evidence("career", result)
assert strict["present_evidence"]["argala_support"] == {
"level": "supportive",
"target_house": 10,
"source": "argala_house_bridge_v1",
"signals": ["argala_support"],
"raw": {
"net_result": "supported",
"argala_count": 2,
"virodhargala_count": 0,
},
}
assert strict["event_judgement"]["dominant_label"] == "career_status"
assert "argala_support" in strict["event_judgement"]["secondary_context"]