"""Unit tests for the AcoustID response parser — pure, no network.""" from app.infrastructure.metadata.acoustid import _parse_best_match def _payload_with_results(results: list[object]) -> dict[str, object]: return {"status": "ok", "results": results} def test_parses_full_recording() -> None: payload = _payload_with_results( [ { "id": "acoustid-1", "score": 0.97, "recordings": [ { "id": "mb-rec-1", "title": "One More Time", "artists": [{"id": "a1", "name": "Daft Punk"}], "releasegroups": [{"id": "rg1", "title": "Discovery"}], } ], } ] ) match = _parse_best_match(payload) assert match is not None assert match.acoustid == "acoustid-1" assert match.recording_mbid == "mb-rec-1" assert match.title == "One More Time" assert match.artist == "Daft Punk" assert match.album == "Discovery" assert match.release_group_mbid == "rg1" assert match.score == 0.97 def test_picks_highest_score() -> None: payload = _payload_with_results( [ {"id": "low", "score": 0.40, "recordings": [{"id": "r-low", "title": "Low"}]}, {"id": "high", "score": 0.92, "recordings": [{"id": "r-high", "title": "High"}]}, ] ) match = _parse_best_match(payload) assert match is not None assert match.acoustid == "high" assert match.title == "High" def test_result_without_recordings_still_returns_id() -> None: payload = _payload_with_results([{"id": "acoustid-only", "score": 0.5}]) match = _parse_best_match(payload) assert match is not None assert match.acoustid == "acoustid-only" assert match.recording_mbid is None assert match.title is None def test_error_status_returns_none() -> None: assert _parse_best_match({"status": "error", "error": {"message": "bad"}}) is None def test_empty_results_returns_none() -> None: assert _parse_best_match(_payload_with_results([])) is None def test_non_dict_payload_returns_none() -> None: assert _parse_best_match("nonsense") is None assert _parse_best_match(None) is None