mirror of
https://github.com/arc53/DocsGPT.git
synced 2025-11-29 08:33:20 +00:00
64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
import pytest
|
|
from pathlib import Path
|
|
from unittest.mock import patch
|
|
|
|
from application.parser.file.pptx_parser import PPTXParser
|
|
|
|
|
|
def test_pptx_init_parser():
|
|
parser = PPTXParser()
|
|
assert isinstance(parser._init_parser(), dict)
|
|
assert not parser.parser_config_set
|
|
parser.init_parser()
|
|
assert parser.parser_config_set
|
|
|
|
|
|
def _fake_presentation_with(slides_shapes_texts):
|
|
class Shape:
|
|
def __init__(self, text=None):
|
|
if text is not None:
|
|
self.text = text
|
|
class Slide:
|
|
def __init__(self, texts):
|
|
self.shapes = [Shape(t) for t in texts]
|
|
class Pres:
|
|
def __init__(self, _file):
|
|
self.slides = [Slide(texts) for texts in slides_shapes_texts]
|
|
return Pres
|
|
|
|
|
|
def test_pptx_parser_concat_true():
|
|
slides = [["Hello ", "World"], ["Slide2"]]
|
|
FakePres = _fake_presentation_with(slides)
|
|
import sys
|
|
import types
|
|
fake_pptx = types.ModuleType("pptx")
|
|
fake_pptx.Presentation = FakePres
|
|
parser = PPTXParser()
|
|
with patch.dict(sys.modules, {"pptx": fake_pptx}):
|
|
result = parser.parse_file(Path("deck.pptx"))
|
|
assert result == "Hello World\nSlide2"
|
|
|
|
|
|
def test_pptx_parser_list_mode():
|
|
slides = [[" A ", "B"], [" C "]]
|
|
FakePres = _fake_presentation_with(slides)
|
|
import sys
|
|
import types
|
|
fake_pptx = types.ModuleType("pptx")
|
|
fake_pptx.Presentation = FakePres
|
|
parser = PPTXParser()
|
|
parser._concat_slides = False
|
|
with patch.dict(sys.modules, {"pptx": fake_pptx}):
|
|
result = parser.parse_file(Path("deck.pptx"))
|
|
assert result == ["A B", "C"]
|
|
|
|
|
|
def test_pptx_parser_import_error():
|
|
parser = PPTXParser()
|
|
import sys
|
|
with patch.dict(sys.modules, {"pptx": None}):
|
|
with pytest.raises(ImportError, match="pptx module is required to read .PPTX files"):
|
|
parser.parse_file(Path("missing.pptx"))
|
|
|