mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 05:40:26 +02:00
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
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user