from lyra_worker.adapters.qobuz import QobuzAdapter from lyra_worker.adapters.soulseek import SoulseekAdapter from lyra_worker.adapters.youtube import YouTubeAdapter from lyra_worker.registry import build_adapters QOBUZ_CFG = {"qobuz.email": "me@example.com", "qobuz.password": "secret"} SLSKD_CFG = {"slskd.url": "http://slskd:5030", "slskd.api_key": "key"} def test_only_youtube_without_any_config(): names = [a.name for a in build_adapters({})] assert names == ["youtube"] # qobuz + soulseek both gated off def test_soulseek_included_when_configured(): adapters = build_adapters(SLSKD_CFG) names = [a.name for a in adapters] assert "soulseek" in names and "youtube" in names assert "qobuz" not in names assert isinstance(next(a for a in adapters if a.name == "soulseek"), SoulseekAdapter) def test_all_three_configured_ordered_by_tier(): adapters = build_adapters({**QOBUZ_CFG, **SLSKD_CFG}) names = [a.name for a in adapters] assert names == ["qobuz", "soulseek", "youtube"] # tiers 0,1,2 assert len(names) == len(set(names)) assert isinstance(next(a for a in adapters if a.name == "qobuz"), QobuzAdapter) assert isinstance(next(a for a in adapters if a.name == "youtube"), YouTubeAdapter)