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()