From f93d71f78ab6ae379ce739522e687ec66e8c0e09 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Fri, 10 Jul 2026 22:56:23 +0200 Subject: [PATCH] test: verify SoulseekAdapter through the pipeline and full ranking order --- worker/tests/test_soulseek_pipeline.py | 48 ++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 worker/tests/test_soulseek_pipeline.py diff --git a/worker/tests/test_soulseek_pipeline.py b/worker/tests/test_soulseek_pipeline.py new file mode 100644 index 0000000..f091abf --- /dev/null +++ b/worker/tests/test_soulseek_pipeline.py @@ -0,0 +1,48 @@ +from lyra_worker.adapters.qobuz import QobuzAdapter +from lyra_worker.adapters.soulseek import SoulseekAdapter +from lyra_worker.adapters.youtube import YouTubeAdapter +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 +from tests.test_soulseek_adapter import FakeSlskdClient +from tests.test_youtube_adapter import FakeYtClient + + +def test_soulseek_flows_through_pipeline(conn): + job_id = insert_request(conn, artist="John Mayer", album="Continuum") + claim_next(conn) + run_pipeline(conn, job_id, [SoulseekAdapter(FakeSlskdClient())], 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, format FROM "LibraryItem" WHERE artist = %s', ("John Mayer",)) + assert cur.fetchone() == ("soulseek", "FLAC") + + +def test_soulseek_flac_beats_youtube(conn): + 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, + [SoulseekAdapter(FakeSlskdClient()), 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] == "soulseek" # FLAC (class 2) beats YouTube lossy (class 1) + + +def test_qobuz_beats_soulseek(conn): + job_id = insert_request(conn, artist="John Mayer", album="Continuum") + claim_next(conn) + run_pipeline( + conn, job_id, + [QobuzAdapter(FakeQobuzClient()), SoulseekAdapter(FakeSlskdClient())], + dest_root="/tmp/lib", + ) + with conn.cursor() as cur: + cur.execute('SELECT source FROM "Candidate" WHERE "jobId" = %s AND chosen = true', (job_id,)) + # Qobuz hi-res (class 3) OR same-class-lower-tier both put Qobuz first; Qobuz wins. + assert cur.fetchone()[0] == "qobuz"