slidegent / tests /test_deck_generator.py
jomasego's picture
Upload folder using huggingface_hub
ad0ebea verified
Raw
History Blame Contribute Delete
1.87 kB
import unittest
from pathlib import Path
from pptx.presentation import Presentation as PresentationClass
from src.ppt.deck_generator import generate_presentation, parse_slides_payload
class TestDeckGenerator(unittest.TestCase):
def setUp(self):
self.template_path = Path(__file__).resolve().parents[1] / "templates" / "base_template.pptx"
self.valid_json = [
{
"title": "Slide 1",
"bullets": ["Content for slide 1"],
"layout_type": "content_slide",
},
{
"title": "Slide 2",
"bullets": ["Content for slide 2"],
"layout_type": "split_slide",
},
]
self.invalid_json = "This is not a valid JSON format"
def test_generate_presentation_valid(self):
presentation = generate_presentation(self.valid_json, self.template_path)
self.assertIsInstance(presentation, PresentationClass)
self.assertEqual(len(presentation.slides), len(self.valid_json))
def test_generate_presentation_invalid_json(self):
with self.assertRaises(ValueError):
generate_presentation(self.invalid_json, self.template_path)
def test_generate_presentation_empty_json(self):
empty_json = []
presentation = generate_presentation(empty_json, self.template_path)
self.assertIsInstance(presentation, PresentationClass)
self.assertEqual(len(presentation.slides), 0)
def test_parse_slides_payload_from_fenced_json(self):
raw = """```json
[{"title": "A", "bullets": ["b1"], "layout_type": "title_slide"}]
```"""
parsed = parse_slides_payload(raw)
self.assertEqual(parsed[0]["title"], "A")
self.assertEqual(parsed[0]["layout_type"], "title_slide")
if __name__ == '__main__':
unittest.main()