import asyncio import base64 import gzip import hashlib import json from datetime import UTC, datetime from types import SimpleNamespace import pytest def capture(articles, source="coindesk"): return { "source": source, "url": "https://www.coindesk.com/api/v1/articles/timeline?size=16", "status": 200, "headers": {"content-type": "application/json"}, "body": "{\"articles\":[]}", "fetched_at": "2026-10-22T04:00:00+00:00", "articles": articles, } def article(**overrides): return {"guid": "original-guid", "url": "https://www.coindesk.com/markets/2025/01/02/story", "title": "Bitcoin announcement", "summary": "Public summary