from option_mcp_common.models import EventPriority, EventType, L2Entry def test_l2_entry_minimal(): entry = L2Entry( timestamp="2026-04-17T10:30:00Z", setup="bull put spread ETH 1800/1750 14d", tesi="IV alta post-CPI, attesa mean-reversion", esito="aperto" ) assert entry.scostamento_sigma is None assert entry.tesi_check is None def test_l2_entry_full(): entry = L2Entry( timestamp="2026-04-17T10:30:00Z", setup="bull put spread ETH 1800/1750 14d", tesi="IV alta post-CPI", tesi_check="ETH sopra 1820 per 24h con IV in calo", invalidation="rottura 1800 con volume > 2x media", esito="chiuso +12 USDC", scostamento="nessuno", scostamento_sigma=0.5, lezione="supporto ha tenuto, timing ok", sizing_note="size 80 USDC (ATR 1.3x media)", ) assert entry.scostamento_sigma == 0.5 dump = entry.model_dump() assert dump["lezione"] == "supporto ha tenuto, timing ok" def test_event_priority_enum(): assert EventPriority.CRITICAL.value == "critical" assert EventPriority.LOW < EventPriority.CRITICAL # ordering def test_event_type_enum(): assert EventType.ALERT.value == "alert" assert EventType.USER_INSTRUCTION.value == "user_instruction"