summaryrefslogtreecommitdiff
path: root/services/news-collector/tests/test_main.py
diff options
context:
space:
mode:
Diffstat (limited to 'services/news-collector/tests/test_main.py')
-rw-r--r--services/news-collector/tests/test_main.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/services/news-collector/tests/test_main.py b/services/news-collector/tests/test_main.py
new file mode 100644
index 0000000..3ebb094
--- /dev/null
+++ b/services/news-collector/tests/test_main.py
@@ -0,0 +1,37 @@
+"""Tests for news collector scheduler."""
+import pytest
+from unittest.mock import AsyncMock, MagicMock
+from datetime import datetime, timezone
+from shared.models import NewsCategory, NewsItem
+from news_collector.main import run_collector_once
+
+
+async def test_run_collector_once_stores_and_publishes():
+ mock_item = NewsItem(
+ source="test", headline="Test news",
+ published_at=datetime(2026, 4, 2, tzinfo=timezone.utc),
+ sentiment=0.5, category=NewsCategory.MACRO,
+ )
+ mock_collector = MagicMock()
+ mock_collector.name = "test"
+ mock_collector.collect = AsyncMock(return_value=[mock_item])
+ mock_db = MagicMock()
+ mock_db.insert_news_item = AsyncMock()
+ mock_broker = MagicMock()
+ mock_broker.publish = AsyncMock()
+
+ count = await run_collector_once(mock_collector, mock_db, mock_broker)
+ assert count == 1
+ mock_db.insert_news_item.assert_called_once_with(mock_item)
+ mock_broker.publish.assert_called_once()
+
+
+async def test_run_collector_once_handles_empty():
+ mock_collector = MagicMock()
+ mock_collector.name = "test"
+ mock_collector.collect = AsyncMock(return_value=[])
+ mock_db = MagicMock()
+ mock_broker = MagicMock()
+
+ count = await run_collector_once(mock_collector, mock_db, mock_broker)
+ assert count == 0