Spaces:
Running on Zero
Running on Zero
| 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() |