diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2026-04-02 13:54:57 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2026-04-02 13:54:57 +0900 |
| commit | ff5a74810ef5f8748b2b30e543968dd9e48512f0 (patch) | |
| tree | 064abadbdf227fa95d9bd37231499cb72cda7e06 /shared/tests/test_news_events.py | |
| parent | b781c8f7c0371a28faf61099b38c28cfed3c46b3 (diff) | |
feat: add NewsEvent, DB methods for news/sentiment/selections
- Add NEWS to EventType enum and NewsEvent class to events.py
- Add insert_news_item, get_recent_news, upsert_symbol_score,
get_top_symbol_scores, upsert_market_sentiment,
get_latest_market_sentiment, insert_stock_selection,
get_stock_selections methods to Database class in db.py
- Add test_news_events.py and test_db_news.py with full coverage
Diffstat (limited to 'shared/tests/test_news_events.py')
| -rw-r--r-- | shared/tests/test_news_events.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/shared/tests/test_news_events.py b/shared/tests/test_news_events.py new file mode 100644 index 0000000..384796a --- /dev/null +++ b/shared/tests/test_news_events.py @@ -0,0 +1,56 @@ +"""Tests for NewsEvent.""" + +from datetime import datetime, timezone + +from shared.models import NewsCategory, NewsItem +from shared.events import NewsEvent, EventType, Event + + +def test_news_event_to_dict(): + item = NewsItem( + source="finnhub", + headline="Test", + published_at=datetime(2026, 4, 2, tzinfo=timezone.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) |
