summaryrefslogtreecommitdiff
path: root/services/news-collector/tests/test_main.py
blob: 3ebb0944fe436de7f9c927e39acd8bfbe3df7e78 (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
"""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