Files
abogen/tests/test_title_builder.py
T
Artem Akymenko 7777e58f1d refactor: extract title/outro builders into domain/title_builder.py
- Extract build_title_intro_text and build_outro_text into domain/title_builder.py
- Uses metadata_helpers for metadata processing
- Remove _build_title_intro_text and _build_outro_text from conversion_runner.py
- Add tests/test_title_builder.py with 12 tests
- All tests match old behavior
2026-07-14 10:27:48 +00:00

59 lines
2.3 KiB
Python

"""Tests for domain/title_builder.py."""
import sys
import os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
from abogen.domain.title_builder import build_title_intro_text, build_outro_text
class TestBuildTitleIntroText:
def test_empty_metadata(self):
result = build_title_intro_text({}, "book.epub")
assert result == "book."
def test_title_from_metadata(self):
result = build_title_intro_text({"title": "My Book"}, "book.epub")
assert result == "My Book."
def test_title_fallback_basename(self):
result = build_title_intro_text({}, "my_book.epub")
assert result == "my_book."
def test_with_author(self):
result = build_title_intro_text({"title": "My Book", "author": "John Doe"}, "book.epub")
assert result == "My Book. By John Doe."
def test_with_subtitle(self):
result = build_title_intro_text({"title": "My Book", "subtitle": "A Tale"}, "book.epub")
assert result == "My Book. A Tale."
def test_duplicate_title_subtitle(self):
result = build_title_intro_text({"title": "My Book", "subtitle": "My Book"}, "book.epub")
assert result == "My Book."
def test_with_series(self):
result = build_title_intro_text({"title": "My Book", "series": "Series", "series_index": "3"}, "book.epub")
assert result == "Book 3 of the Series. My Book."
class TestBuildOutroText:
def test_empty(self):
result = build_outro_text({}, "book.epub")
assert result == "The end of book."
def test_title_only(self):
result = build_outro_text({"title": "My Book"}, "book.epub")
assert result == "The end of My Book."
def test_author_only(self):
result = build_outro_text({"author": "John Doe"}, "book.epub")
assert result == "The end of book from John Doe."
def test_title_and_author(self):
result = build_outro_text({"title": "My Book", "author": "John Doe"}, "book.epub")
assert result == "The end of My Book from John Doe."
def test_with_series(self):
result = build_outro_text({"title": "My Book", "series": "Series", "series_index": "3"}, "book.epub")
assert "The end of My Book." in result
assert "Book 3 of the Series." in result