summaryrefslogtreecommitdiff
path: root/services/news-collector/tests/test_main.py
blob: f85569afee74fe2ce971b4a321137671bd901ec9 (plain)
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
40
41
"""Tests for news collector scheduler."""

from datetime import UTC, datetime
from unittest.mock import AsyncMock, MagicMock

from news_collector.main import run_collector_once

from shared.models import NewsCategory, NewsItem


async def test_run_collector_once_stores_and_publishes():
    mock_item = NewsItem(
        source="test",
        headline="Test news",
        published_at=datetime(2026, 4, 2, tzinfo=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