feat: add live publisher adapters and generated covers

This commit is contained in:
AHMED
2026-10-09 16:22:32 +03:00
parent 54dfe2ff3c
commit 61aea8d83e
5 changed files with 588 additions and 2 deletions
+36
View File
@@ -0,0 +1,36 @@
import hashlib
import tempfile
import unittest
from pathlib import Path
from PIL import Image
from cover import generate_cover
class CoverTests(unittest.TestCase):
def test_generates_deterministic_1200x630_jpeg_under_5mb(self):
output_dir = Path(tempfile.mkdtemp())
first = generate_cover("arabic-ai-guide", "أدوات", output_dir)
first_hash = hashlib.sha256(first["path"].read_bytes()).hexdigest()
second = generate_cover("arabic-ai-guide", "أدوات", output_dir)
second_hash = hashlib.sha256(second["path"].read_bytes()).hexdigest()
self.assertEqual(first_hash, second_hash)
self.assertEqual(first["coverImage"]["filename"], "arabic-ai-guide.jpg")
self.assertLessEqual(first["path"].stat().st_size, 5 * 1024 * 1024)
with Image.open(first["path"]) as image:
self.assertEqual(image.size, (1200, 630))
self.assertEqual(image.format, "JPEG")
self.assertEqual(image.mode, "RGB")
def test_rejects_invalid_slug_or_category(self):
output_dir = Path(tempfile.mkdtemp())
with self.assertRaises(ValueError):
generate_cover("عنوان عربي", "أدوات", output_dir)
with self.assertRaises(ValueError):
generate_cover("valid-slug", "عام", output_dir)
if __name__ == "__main__":
unittest.main()