import server.mf # noqa: F401 — loads musicfetch, registers musicfetch_core import musicfetch_core as mf class _FakeResp: def __init__(self, status, payload): self.status_code = status self._payload = payload def json(self): return self._payload FULL = { "entityUniqueId": "SPOTIFY_SONG::abc", "entitiesByUniqueId": { "SPOTIFY_SONG::abc": { "title": "Bloom", "artistName": "ODESZA", "thumbnailUrl": "https://img/cover.jpg", } }, "linksByPlatform": { "youtubeMusic": {"url": "https://music.youtube.com/watch?v=YYY"}, "youtube": {"url": "https://youtube.com/watch?v=YYY"}, }, } def test_odesli_resolve_full(monkeypatch): monkeypatch.setattr(mf.requests, "get", lambda *a, **k: _FakeResp(200, FULL)) r = mf.odesli_resolve("https://open.spotify.com/track/abc") assert r.title == "Bloom" assert r.artist == "ODESZA" assert r.thumb == "https://img/cover.jpg" assert r.youtube_url == "https://music.youtube.com/watch?v=YYY" def test_odesli_resolve_prefers_ytmusic_then_youtube(monkeypatch): payload = {**FULL, "linksByPlatform": {"youtube": {"url": "https://youtube.com/watch?v=ZZZ"}}} monkeypatch.setattr(mf.requests, "get", lambda *a, **k: _FakeResp(200, payload)) r = mf.odesli_resolve("https://open.spotify.com/track/abc") assert r.youtube_url == "https://youtube.com/watch?v=ZZZ" def test_odesli_resolve_no_youtube_link(monkeypatch): payload = {**FULL, "linksByPlatform": {}} monkeypatch.setattr(mf.requests, "get", lambda *a, **k: _FakeResp(200, payload)) r = mf.odesli_resolve("https://open.spotify.com/track/abc") assert r.youtube_url == "" assert r.title == "Bloom" def test_odesli_resolve_non_200_returns_none(monkeypatch): monkeypatch.setattr(mf.requests, "get", lambda *a, **k: _FakeResp(429, {})) assert mf.odesli_resolve("https://open.spotify.com/track/abc") is None def test_odesli_resolve_malformed_returns_none(monkeypatch): monkeypatch.setattr(mf.requests, "get", lambda *a, **k: _FakeResp(200, {"nope": 1})) assert mf.odesli_resolve("https://open.spotify.com/track/abc") is None def test_odesli_resolve_network_error_returns_none(monkeypatch): def boom(*a, **k): raise mf.RequestException("down") monkeypatch.setattr(mf.requests, "get", boom) assert mf.odesli_resolve("https://open.spotify.com/track/abc") is None