add program files

This commit is contained in:
2025-11-16 10:00:56 +01:00
parent 4a019c37c2
commit 4519d722bc
23 changed files with 1205 additions and 0 deletions
+74
View File
@@ -0,0 +1,74 @@
from __future__ import annotations
import json
from pathlib import Path
from audiobooksorter.ingest import AudiobookRecord
from audiobooksorter.sorter import sort_by_series
def _load_sample(path: Path) -> list[AudiobookRecord]:
data = json.loads(path.read_text(encoding="utf-8"))
return [
AudiobookRecord(
title=item["title"],
series=item.get("series"),
series_index=item.get("seriesIndex"),
author=item["author"],
)
for item in data
]
def test_sorting_orders_by_author_then_series(samples_dir: Path) -> None:
records = _load_sample(samples_dir / "library.json")
sorted_records = sort_by_series(records)
titles = [record.title for record in sorted_records]
assert titles == [
"Wayfarers", # Becky Chambers
"The Final Empire",
"The Well of Ascension",
"The Way of Kings",
"Words of Radiance",
]
def test_author_parsing_handles_last_first_pairs() -> None:
records = [
AudiobookRecord(
title="A Solo Standard",
series=None,
series_index=None,
author="Ichiro Kishimi",
),
AudiobookRecord(
title="B Solo LastFirst",
series=None,
series_index=None,
author="Kishimi, Ichiro",
),
AudiobookRecord(
title="C Ampersand",
series=None,
series_index=None,
author="Ichiro Kishimi & Fumitake Koga",
),
AudiobookRecord(
title="D Comma List",
series=None,
series_index=None,
author="Kishimi, Ichiro, Koga, Fumitake",
),
]
sorted_records = sort_by_series(records)
titles = [record.title for record in sorted_records]
assert titles == [
"A Solo Standard",
"B Solo LastFirst",
"C Ampersand",
"D Comma List",
]