Files
ai-exchange/tests/unit/test_research_council_imports.py
2026-05-11 23:37:47 +08:00

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()