32 lines
1.3 KiB
Python
32 lines
1.3 KiB
Python
from datetime import UTC, datetime
|
|
import pytest
|
|
|
|
|
|
|
|
def test_timeline_preserves_actual_publication_and_provider_identity(trading):
|
|
from alphapulse.crawler.history_capture import timeline_articles
|
|
result = timeline_articles({'hasMore': False, 'articles': [{'_id': 'original', 'pathname': '/markets/story',
|
|
'title': 'Official title', 'description': 'Public summary',
|
|
'articleDates': {'displayDate': '2024-12-31T17:00:00Z'}}]})
|
|
assert result[0].guid == 'original'
|
|
assert result[0].published_at == datetime(2024, 12, 31, 17, tzinfo=UTC)
|
|
assert result[0].summary == 'Public summary'
|
|
|
|
|
|
def test_unknown_timeline_shape_is_not_empty_success(trading):
|
|
from alphapulse.crawler.history_capture import timeline_articles
|
|
with pytest.raises(ValueError):
|
|
timeline_articles({'articles': []})
|
|
|
|
|
|
def test_ecb_index_keeps_existing_news_scope(trading):
|
|
from alphapulse.crawler.history_capture import ecb_articles
|
|
row = [1, 1735732800, 2025, 0, 1, None, None, None, None,
|
|
['/press/key/date/2025/html/example.en.html', '/stats/example.html'], {'Title': 'Speech'}, [], []]
|
|
result = ecb_articles(row)
|
|
assert len(result) == 1
|
|
assert '/press/key/' in str(result[0].url)
|
|
assert result[0].published_at == datetime.fromtimestamp(1735732800, UTC)
|
|
with pytest.raises(ValueError):
|
|
ecb_articles(row[:-1])
|