Bridge functional benefic malefic layer
This commit is contained in:
@@ -8,6 +8,7 @@ import json
|
||||
import os
|
||||
import sys
|
||||
from io import BytesIO
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
@@ -433,6 +434,30 @@ def test_report_artifact_generates_html_fallback_artifact() -> None:
|
||||
assert result['delivery']['next_action']
|
||||
|
||||
|
||||
def test_report_artifact_can_render_functional_benefic_malefic_summary() -> None:
|
||||
handler = _handler()
|
||||
result = handler._compute_report_artifact({
|
||||
'format': 'html',
|
||||
'name': 'functional-role-report',
|
||||
'html': '<!doctype html><html><body><h1>Jyotish</h1></body></html>',
|
||||
'functional_benefic_malefic': {
|
||||
'status': 'used',
|
||||
'ascendant': 'Leo',
|
||||
'functional_benefics': ['Sun', 'Mars', 'Jupiter'],
|
||||
'functional_malefics': ['Venus', 'Saturn'],
|
||||
'effect_on_confidence': '高严谨模式下必须叠加功能性吉凶星。',
|
||||
},
|
||||
})
|
||||
|
||||
assert result['success'] is True
|
||||
html = Path(result['html_path']).read_text(encoding='utf-8')
|
||||
assert 'Functional Benefic/Malefic' in html
|
||||
assert 'Leo' in html
|
||||
assert 'Sun, Mars, Jupiter' in html
|
||||
assert 'Venus, Saturn' in html
|
||||
assert '高严谨模式下必须叠加功能性吉凶星。' in html
|
||||
|
||||
|
||||
def test_report_artifact_pdf_fallback_exposes_user_visible_delivery(monkeypatch) -> None:
|
||||
class BrokenReportBuilder:
|
||||
@staticmethod
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from mcp_server import _collect_strict_evidence
|
||||
from scripts.functional_benefics import derive_functional_benefic_malefic
|
||||
|
||||
|
||||
def _base_relationship_result() -> dict:
|
||||
@@ -48,3 +49,28 @@ def test_relationship_strict_workflow_exposes_functional_benefic_malefic_layer()
|
||||
assert "Venus" in functional["functional_malefics"]
|
||||
assert "functional_benefic_malefic_used" in strict["event_judgement"]["secondary_context"]
|
||||
|
||||
|
||||
def test_functional_benefic_module_calculates_lagna_roles_without_planets() -> None:
|
||||
functional = derive_functional_benefic_malefic("Leo")
|
||||
|
||||
assert functional["status"] == "used"
|
||||
assert functional["ascendant"] == "Leo"
|
||||
assert functional["owned_houses"]["Sun"] == [1]
|
||||
assert functional["owned_houses"]["Venus"] == [3, 10]
|
||||
assert "Sun" in functional["functional_benefics"]
|
||||
assert "Venus" in functional["functional_malefics"]
|
||||
assert functional["source"] == "strict_functional_benefic_malefic_v1"
|
||||
|
||||
|
||||
def test_relationship_functional_layer_uses_ascendant_even_when_planets_missing() -> None:
|
||||
result = _base_relationship_result()
|
||||
result["modules"]["chart"] = {"ascendant": {"sign": "Leo"}}
|
||||
|
||||
strict = _collect_strict_evidence("relationship", result)
|
||||
|
||||
functional = strict["present_evidence"]["functional_benefic_malefic"]
|
||||
assert functional["status"] == "used"
|
||||
assert functional["ascendant"] == "Leo"
|
||||
assert "Sun" in functional["functional_benefics"]
|
||||
assert "Venus" in functional["functional_malefics"]
|
||||
assert "functional_benefic_malefic_used" in strict["event_judgement"]["secondary_context"]
|
||||
|
||||
Reference in New Issue
Block a user