Refactor AI daily report pipeline
This commit is contained in:
47
tests/test_clients.py
Normal file
47
tests/test_clients.py
Normal file
@@ -0,0 +1,47 @@
|
||||
import json
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
|
||||
from ai_daily_report.clients import BlogApiClient, OpenAICompatibleClient, fetch_text
|
||||
|
||||
|
||||
class FakeResponse:
|
||||
status = 200
|
||||
|
||||
def __init__(self, body):
|
||||
self.body = body
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
||||
def __exit__(self, exc_type, exc, tb):
|
||||
return False
|
||||
|
||||
def read(self):
|
||||
return self.body
|
||||
|
||||
|
||||
class ClientTests(unittest.TestCase):
|
||||
def test_fetch_text_decodes_response(self):
|
||||
with patch("urllib.request.urlopen", return_value=FakeResponse("ok".encode("utf-8"))):
|
||||
self.assertEqual(fetch_text("https://example.com", 1), "ok")
|
||||
|
||||
def test_openai_compatible_client_returns_message_content(self):
|
||||
body = json.dumps({"choices": [{"message": {"content": "hello"}}]}).encode("utf-8")
|
||||
with patch("urllib.request.urlopen", return_value=FakeResponse(body)):
|
||||
client = OpenAICompatibleClient(api_key="key", base_url="https://llm.example/v1", model="model")
|
||||
self.assertEqual(client.chat("prompt"), "hello")
|
||||
|
||||
def test_blog_api_client_create_and_publish(self):
|
||||
responses = [
|
||||
FakeResponse(json.dumps({"slug": "ai-2026-06-04"}).encode("utf-8")),
|
||||
FakeResponse(json.dumps({"ok": True}).encode("utf-8")),
|
||||
]
|
||||
with patch("urllib.request.urlopen", side_effect=responses):
|
||||
client = BlogApiClient(base_url="https://blog.example", token="token")
|
||||
self.assertEqual(client.create_post({"title": "t"})["slug"], "ai-2026-06-04")
|
||||
client.publish_post("ai-2026-06-04")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user