Files
abogen/tests/test_audiobookshelf_client.py
2026-01-09 01:36:14 +03:00

88 lines
2.3 KiB
Python

from __future__ import annotations
import json
from abogen.integrations.audiobookshelf import (
AudiobookshelfClient,
AudiobookshelfConfig,
)
def test_upload_fields_include_series_sequence(tmp_path):
audio_path = tmp_path / "book.mp3"
audio_path.write_bytes(b"audio")
config = AudiobookshelfConfig(
base_url="https://example.test",
api_token="token",
library_id="library-id",
folder_id="folder-id",
)
client = AudiobookshelfClient(config)
client._folder_cache = ("folder-id", "Folder", "Library")
metadata = {
"title": "Example Title",
"seriesName": "Example Saga",
"seriesSequence": "7",
}
fields = client._build_upload_fields(audio_path, metadata, chapters=None)
assert fields["series"] == "Example Saga"
assert fields["seriesSequence"] == "7"
assert "metadata" in fields
payload = json.loads(fields["metadata"])
assert payload["seriesSequence"] == "7"
def test_upload_fields_normalize_alternate_sequence_keys(tmp_path):
audio_path = tmp_path / "book.mp3"
audio_path.write_bytes(b"audio")
config = AudiobookshelfConfig(
base_url="https://example.test",
api_token="token",
library_id="library-id",
folder_id="folder-id",
)
client = AudiobookshelfClient(config)
client._folder_cache = ("folder-id", "Folder", "Library")
metadata = {
"title": "Example Title",
"seriesName": "Example Saga",
"series_index": "Book 3",
}
fields = client._build_upload_fields(audio_path, metadata, chapters=None)
assert fields["series"] == "Example Saga"
assert fields["seriesSequence"] == "3"
def test_upload_fields_preserve_decimal_sequence(tmp_path):
audio_path = tmp_path / "book.mp3"
audio_path.write_bytes(b"audio")
config = AudiobookshelfConfig(
base_url="https://example.test",
api_token="token",
library_id="library-id",
folder_id="folder-id",
)
client = AudiobookshelfClient(config)
client._folder_cache = ("folder-id", "Folder", "Library")
metadata = {
"title": "Example Title",
"seriesName": "Example Saga",
"seriesSequence": "0.5",
}
fields = client._build_upload_fields(audio_path, metadata, chapters=None)
assert fields["seriesSequence"] == "0.5"