| from landppt.services.file_outline_utils import ( |
| extract_saved_file_outline, |
| get_file_processing_mode, |
| is_file_generated_outline, |
| normalize_uploaded_files, |
| prefer_uploaded_files_for_magic_pdf, |
| should_force_file_outline_regeneration, |
| ) |
|
|
|
|
| def test_get_file_processing_mode_defaults(): |
| assert get_file_processing_mode({}) == "markitdown" |
| assert get_file_processing_mode({"file_processing_mode": ""}) == "markitdown" |
|
|
|
|
| def test_normalize_uploaded_files_filters_invalid_entries(): |
| assert normalize_uploaded_files(None) == [] |
| assert normalize_uploaded_files({}) == [] |
| assert normalize_uploaded_files([{"filename": "a.pdf"}]) == [] |
| assert normalize_uploaded_files([{"file_path": "/x/a.pdf", "filename": "a.pdf"}]) == [ |
| {"file_path": "/x/a.pdf", "filename": "a.pdf"} |
| ] |
|
|
|
|
| def test_prefer_uploaded_files_for_magic_pdf_only_when_selected(): |
| ok, items = prefer_uploaded_files_for_magic_pdf( |
| {"file_processing_mode": "markitdown", "uploaded_files": [{"file_path": "/x/a.pdf", "filename": "a.pdf"}]} |
| ) |
| assert ok is False |
| assert items == [] |
|
|
| ok, items = prefer_uploaded_files_for_magic_pdf( |
| {"file_processing_mode": "magic_pdf", "uploaded_files": [{"file_path": "/x/a.pdf", "filename": "a.pdf"}]} |
| ) |
| assert ok is True |
| assert items == [{"file_path": "/x/a.pdf", "filename": "a.pdf"}] |
|
|
|
|
| def test_extract_saved_file_outline_prefers_project_outline(): |
| project_outline = { |
| "slides": [{"title": "A"}], |
| "metadata": {"generated_with_summeryfile": True}, |
| } |
| confirmed_requirements = { |
| "file_generated_outline": { |
| "slides": [{"title": "B"}], |
| "metadata": {}, |
| } |
| } |
|
|
| assert extract_saved_file_outline(project_outline, confirmed_requirements) == project_outline |
| assert is_file_generated_outline(project_outline) is True |
|
|
|
|
| def test_extract_saved_file_outline_honors_force_regeneration(): |
| project_outline = { |
| "slides": [{"title": "A"}], |
| "metadata": {"generated_with_summeryfile": True}, |
| } |
| confirmed_requirements = { |
| "file_generated_outline": { |
| "slides": [{"title": "B"}], |
| "metadata": {}, |
| }, |
| "force_file_outline_regeneration": True, |
| } |
|
|
| assert should_force_file_outline_regeneration(confirmed_requirements) is True |
| assert extract_saved_file_outline(project_outline, confirmed_requirements) is None |
|
|