"""Tests for NewsEvent.""" from datetime import UTC, datetime from shared.events import Event, EventType, NewsEvent from shared.models import NewsCategory, NewsItem def test_news_event_to_dict(): item = NewsItem( source="finnhub", headline="Test", published_at=datetime(2026, 4, 2, tzinfo=UTC), sentiment=0.5, category=NewsCategory.MACRO, ) event = NewsEvent(data=item) d = event.to_dict() assert d["type"] == EventType.NEWS assert d["data"]["source"] == "finnhub" def test_news_event_from_raw(): raw = { "type": "NEWS", "data": { "id": "abc", "source": "rss", "headline": "Test headline", "published_at": "2026-04-02T00:00:00+00:00", "sentiment": 0.3, "category": "earnings", "symbols": ["AAPL"], "raw_data": {}, }, } event = NewsEvent.from_raw(raw) assert event.data.source == "rss" assert event.data.symbols == ["AAPL"] def test_event_dispatcher_news(): raw = { "type": "NEWS", "data": { "id": "abc", "source": "finnhub", "headline": "Test", "published_at": "2026-04-02T00:00:00+00:00", "sentiment": 0.0, "category": "macro", "raw_data": {}, }, } event = Event.from_dict(raw) assert isinstance(event, NewsEvent)