79 lines
2.3 KiB
Python
79 lines
2.3 KiB
Python
from fastapi.testclient import TestClient
|
|
from app.main import app
|
|
|
|
c = TestClient(app)
|
|
|
|
|
|
def test_related_artists_mocked(monkeypatch):
|
|
from app.api import discover as disc
|
|
|
|
async def fake_related(artist_id, limit):
|
|
return [{"id": "2", "title": "Similar One", "artist": "Similar One", "media_type": "artist"}]
|
|
|
|
monkeypatch.setattr(disc, "get_related_artists", fake_related)
|
|
r = c.get("/api/artist/169/related")
|
|
assert r.status_code == 200
|
|
assert r.json()["artists"][0]["id"] == "2"
|
|
|
|
|
|
def test_genres_mocked(monkeypatch):
|
|
from app.api import discover as disc
|
|
|
|
async def fake_genres():
|
|
return [{"id": 132, "name": "Pop"}]
|
|
|
|
monkeypatch.setattr(disc, "get_genres", fake_genres)
|
|
r = c.get("/api/discover/genres")
|
|
assert r.status_code == 200
|
|
assert r.json()["genres"][0]["name"] == "Pop"
|
|
|
|
|
|
def test_discover_mocked(monkeypatch):
|
|
from app.api import discover as disc
|
|
|
|
async def fake_discover(kind, genre_id, limit, index=0):
|
|
assert kind in ("tracks", "albums", "artists", "playlists", "new")
|
|
return [{"id": "1", "title": "X"}], 100
|
|
|
|
monkeypatch.setattr(disc, "get_discover", fake_discover)
|
|
r = c.get("/api/discover", params={"kind": "tracks", "genre_id": 132, "limit": 5})
|
|
assert r.status_code == 200
|
|
assert len(r.json()["results"]) == 1
|
|
assert r.json()["total"] == 100
|
|
|
|
|
|
def test_discover_forwards_index(monkeypatch):
|
|
from app.api import discover as disc
|
|
|
|
seen = {}
|
|
|
|
async def fake_discover(kind, genre_id, limit, index=0):
|
|
seen["index"] = index
|
|
return [], 100
|
|
|
|
monkeypatch.setattr(disc, "get_discover", fake_discover)
|
|
r = c.get("/api/discover", params={"kind": "tracks", "index": 24})
|
|
assert r.status_code == 200
|
|
assert seen["index"] == 24
|
|
|
|
|
|
def test_search_forwards_index(monkeypatch):
|
|
from app.services import streamrip_service as svc
|
|
|
|
seen = {}
|
|
|
|
async def fake_search(media_type, query, limit, index=0):
|
|
seen["index"] = index
|
|
return [], 50
|
|
|
|
monkeypatch.setattr(svc, "search_deezer", fake_search)
|
|
r = c.get("/api/search", params={"type": "track", "q": "x", "index": 20})
|
|
assert r.status_code == 200
|
|
assert seen["index"] == 20
|
|
assert r.json()["total"] == 50
|
|
|
|
|
|
def test_discover_rejects_bad_kind():
|
|
r = c.get("/api/discover", params={"kind": "nope"})
|
|
assert r.status_code == 422
|