46 lines
2.3 KiB
Python
46 lines
2.3 KiB
Python
import tempfile
|
|
from pathlib import Path
|
|
import unittest
|
|
|
|
from generate import generate_case
|
|
from docx import Document
|
|
from pypdf import PdfReader
|
|
|
|
|
|
class GeneratorTests(unittest.TestCase):
|
|
def test_short_body_sentences_are_not_structural_headings(self):
|
|
with tempfile.TemporaryDirectory() as directory:
|
|
files = generate_case({"id": "styles", "layout": "single", "lines": ["Work Experience", "Built release tools.", "Skills", "C#; SQL"]}, Path(directory))
|
|
styles = [p.style.name for p in Document(files["docx"]).paragraphs]
|
|
self.assertEqual(styles, ["Heading 2", "Normal", "Heading 2", "Normal"])
|
|
def test_pdf_preserves_unicode_and_explicit_page_break(self):
|
|
with tempfile.TemporaryDirectory() as directory:
|
|
files = generate_case({"id": "unicode", "layout": "multipage", "lines": ["Åse Øvrebø", "PAGE_BREAK", "Tromsø"]}, Path(directory))
|
|
pages = PdfReader(files["pdf"]).pages
|
|
self.assertEqual(len(pages), 2)
|
|
self.assertIn("Åse Øvrebø", pages[0].extract_text())
|
|
self.assertIn("Tromsø", pages[1].extract_text())
|
|
|
|
def test_docx_contains_actual_table_cells(self):
|
|
with tempfile.TemporaryDirectory() as directory:
|
|
files = generate_case({"id": "table", "layout": "table", "lines": ["Education", "Diploma | College | 2010 - 2012"]}, Path(directory))
|
|
document = Document(files["docx"])
|
|
self.assertEqual([cell.text for cell in document.tables[0].rows[0].cells], ["Diploma", "College", "2010 - 2012"])
|
|
|
|
def test_scan_has_no_extractable_pdf_text(self):
|
|
with tempfile.TemporaryDirectory() as directory:
|
|
files = generate_case({"id": "scan", "layout": "scan", "lines": ["Synthetic image only"]}, Path(directory))
|
|
self.assertEqual(PdfReader(files["pdf"]).pages[0].extract_text(), "")
|
|
self.assertNotIn("docx", files)
|
|
|
|
def test_refuses_reusing_fixture_output(self):
|
|
with tempfile.TemporaryDirectory() as directory:
|
|
case = {"id": "one", "layout": "single", "lines": ["Synthetic"]}
|
|
generate_case(case, Path(directory))
|
|
with self.assertRaises(FileExistsError):
|
|
generate_case(case, Path(directory))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|