test: verify SoulseekAdapter through the pipeline and full ranking order
This commit is contained in:
@@ -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"
|
||||
Reference in New Issue
Block a user