mirror of
https://github.com/sligter/LandPPT.git
synced 2026-09-19 02:18:55 +08:00
Add OAuth, community, credits, startup, export, and narration workflows while splitting oversized route and PPT service modules into dedicated components with broader regression coverage. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
70 lines
2.4 KiB
Python
70 lines
2.4 KiB
Python
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
|