37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
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()
|