1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
"""Tests for news collector scheduler."""
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
|