53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
import unittest
|
|
|
|
from src.services.research_council import (
|
|
CouncilCase,
|
|
CouncilDecision,
|
|
CouncilLesson,
|
|
CouncilMemoryService,
|
|
build_empty_council_decision,
|
|
render_council_case,
|
|
render_council_decision,
|
|
)
|
|
|
|
|
|
class ResearchCouncilImportTests(unittest.TestCase):
|
|
def test_package_exports_are_importable(self) -> None:
|
|
decision = build_empty_council_decision()
|
|
|
|
self.assertIsInstance(decision, CouncilDecision)
|
|
self.assertIsInstance(decision.bull_case, CouncilCase)
|
|
self.assertEqual(decision.research_summary, "")
|
|
self.assertTrue(CouncilMemoryService)
|
|
self.assertTrue(CouncilLesson)
|
|
|
|
def test_formatter_outputs_expected_sections(self) -> None:
|
|
decision = CouncilDecision(
|
|
research_summary="Structure and risk views are aligned.",
|
|
operator_summary="Observe only until the next confirmation appears.",
|
|
bull_case=CouncilCase(
|
|
title="Bull Case",
|
|
summary="Liquidity sweep plus MSS supports constructive follow-through.",
|
|
evidence=["sweep_confirmed", "mss_confirmed"],
|
|
),
|
|
bear_case=CouncilCase(
|
|
title="Bear Case",
|
|
summary="Execution remains blocked by current trust and runtime state.",
|
|
evidence=["trust_not_ready", "runtime_degraded"],
|
|
),
|
|
net_assessment="Useful as decision support, not yet for execution assist.",
|
|
committee_confidence=0.72,
|
|
source_snapshot_meta={"instrument_id": 1},
|
|
)
|
|
|
|
case_text = render_council_case(decision.bull_case)
|
|
decision_text = render_council_decision(decision)
|
|
|
|
self.assertIn("**Bull Case**:", case_text)
|
|
self.assertIn("**Research Summary**:", decision_text)
|
|
self.assertIn("**Committee Confidence**: 0.72", decision_text)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|