test: verify real QobuzAdapter flows through the pipeline and outranks YouTube

This commit is contained in:
Jonathan
2026-07-10 22:16:03 +02:00
parent 71143dc15d
commit 7510e7718b
+38
View File
@@ -0,0 +1,38 @@
from lyra_worker.adapters.qobuz import QobuzAdapter
from lyra_worker.claim import claim_next
from lyra_worker.pipeline import run_pipeline
from tests.conftest import insert_request
from tests.test_qobuz_adapter import FakeQobuzClient
def test_qobuz_adapter_flows_through_pipeline(conn):
job_id = insert_request(conn, artist="John Mayer", album="Continuum")
claim_next(conn)
run_pipeline(conn, job_id, [QobuzAdapter(FakeQobuzClient())], dest_root="/tmp/lib")
with conn.cursor() as cur:
cur.execute('SELECT state, "currentStage" FROM "Job" WHERE id = %s', (job_id,))
assert cur.fetchone() == ("imported", "import")
cur.execute('SELECT source FROM "Candidate" WHERE "jobId" = %s AND chosen = true', (job_id,))
assert cur.fetchone()[0] == "qobuz"
cur.execute('SELECT source, format FROM "LibraryItem" WHERE artist = %s', ("John Mayer",))
row = cur.fetchone()
assert row == ("qobuz", "FLAC")
def test_qobuz_and_youtube_ranked_qobuz_wins(conn):
from lyra_worker.adapters.youtube import YouTubeAdapter
from tests.test_youtube_adapter import FakeYtClient
# Both sources return an exact-title match; Qobuz (lossless, tier 0) must outrank YouTube (lossy).
yt_results = [{"source_ref": "yt1", "title": "Continuum", "artist": "John Mayer", "track_count": 12}]
job_id = insert_request(conn, artist="John Mayer", album="Continuum")
claim_next(conn)
run_pipeline(
conn, job_id,
[QobuzAdapter(FakeQobuzClient()), YouTubeAdapter(FakeYtClient(results=yt_results))],
dest_root="/tmp/lib",
)
with conn.cursor() as cur:
cur.execute('SELECT source FROM "Candidate" WHERE "jobId" = %s AND chosen = true', (job_id,))
assert cur.fetchone()[0] == "qobuz" # lossless beats lossy